c# - 如何在组合框中的datatrigger中获取项目源的值?
问题描述
我有一个组合框,其中 itemsource 是 MyTpye 类型的集合。我的类型是这样的:
Class MyClass
{
long ID;
string Description;
decimal Value;
}
对于 DisplayMemberPath,我使用的是 Value 属性。问题是这是一个小数,而不是小数?,所以在 ID 为 0 的情况下,该值也为 0。我想在这种情况下显示 0。
所以我试图以这种方式使用数据触发器:
<ComboBox Name="myComboBox"
DisplayMemberPath="Value"
ItemsSource="{Biniding MyCollection}"
SelectedItem="{Binding Path=MySelectedItem}">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ???, path=ID}" Value="0">
<Setter Property="DisplayMemberPath" Value="{x:Null}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
问题是在数据触发器的绑定中,我不知道如何获取作为组合框项目来源的集合项目,以及从该项目获取 ID 属性。
谢谢。
解决方案
SelectedItem.ID
在您的DataTrigger
绑定路径中使用。
<DataTrigger Binding="{Binding Path=SelectedItem.ID}" Value="0">
或者,您可以改为将另一个属性添加到您MyClass
的类型decimal?
并将其用于 DisplayMemberPath。
public decimal? DisplayValue { get => ID == 0 ? default(decimal?) : Value; }
推荐阅读
- r - 我希望使用 ggplot 和 dplyr 将我的数据百分比是/否作为每人一个栏
- c# - 显示验证错误的工具提示适用于绑定到 POCO 的 TextBlock,但不适用于 POCO 中的 Property。为什么?
- c# - 如何在网格单元格中为项目设置动画?
- python - python - 如何附加到字典名称是变量的字典
- sql-server - 链接表在Access前端、SQL后端是如何工作的?
- wordpress - WordPress 帖子可以显示其他自定义帖子吗?
- javascript - 画布动画 / reactjs / 带有 requestAnimationFrame
- r - 在 R 中启动包“导出”时,此错误是什么意思?
- java - 当我正在读取的文件存在时,Java 程序给了我 FileNotFoundException,但如果我处理异常,则工作得很好
- java - 将 Oracle Java 存储过程连接到 MySQL