wpf - 将 DatePicker.IsEnabled 绑定到 ComboBoxItem.IsSelected
问题描述
我有一个有两个选项的 ComboBox,如下所示:
<ComboBox Name="TypeComboBox">
<ComboBoxItem Name="TemporaryComboItem">Temporary</ComboBoxItem>
<ComboBoxItem Name="PermanentComboItem">Permanent</ComboBoxItem>
</ComboBox>
如果选择了“临时”选项,我有一个 DatePicker 来选择到期日期,如下所示:
<DatePicker
Name="ExpirationDatePicker"
IsEnabled="{Binding TemporaryComboItem.IsSelected}"
/>
但是,这Binding
似乎不起作用,因为无论所选选项如何,都可以使用 DatePicker。
How can I have the DatePicker to be functional only when one of the options is selected?
解决方案
一个有点脏的解决方案:
<ComboBox Name="TypeComboBox">
<ComboBoxItem Name="TemporaryComboItem" Tag="True">Temporary</ComboBoxItem>
<ComboBoxItem Name="PermanentComboItem" >Permanent</ComboBoxItem>
</ComboBox>
<DatePicker Name="ExpirationDatePicker"
IsEnabled="{Binding ElementName=TypeComboBox, Path=SelectedItem.Tag, FallbackValue=False}" />
请注意我如何为临时项设置 Tag 属性并更改 IsEnabled 属性的绑定。绑定现在“查看”组合框的选定项的标记。如果不存在,则默认为 false。
这“滥用”了 Tag 属性。一般来说,我建议不要这样做,因为不清楚 Tag 属性的作用/含义。
一种正确的方法可能是将所有这些 UI 元素绑定到 ViewModel,以便 DatePicker 可以绑定到 ViewModel 上更清楚地表达含义/用途的属性。
推荐阅读
- google-workspace - GSuite API:授权应用及其用户
- c++ - arduino 的 C++ - 错误:类没有命名类型
- java - Java 相机实现
- shell - 如何只用一个命令执行一堆makefile?或者如何编写我的makefile?
- database - Angular + Firestore,如何做这个 CRUD 系统?
- ssis - SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR
- sql-server - 如何选择行的总和
- loops - 用于在列中设置值的 Google 表格脚本
- python - ValueError: pos_label=1 不是有效标签:array(['neg', 'pos'], dtype='
我在尝试获取召回分数时收到此错误。
X_test = test_pos_vec + test_neg_vec Y_test = ["pos"] * len(test_pos_vec) + ["neg"] * len(test_neg_vec) recall_average = recall_
- android - 如何以编程方式启动应用程序详细信息?