我有一个组合框,它的项来源是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>
问题是,在数据触发器的绑定中,我不知道如何获取集合中的项,即组合框中项的sorce,以及从该项中获取ID属性。
谢谢。
发布于 2018-07-16 18:17:12
去掉DisplayMemberPath
,使用ItemTemplate
显示Value
属性的值或其他值:
<ComboBox Name="myComboBox"
ItemsSource="{Binding MyCollection}"
SelectedItem="{Binding Path=MySelectedItem}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Value}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="0">
<Setter Property="Text" Value="..." />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在上面的例子中,"...“对于任何Value
为0
的项目,将显示"0“而不是”0“。
发布于 2018-07-15 11:36:33
在DataTrigger
绑定路径中使用SelectedItem.ID
。
<DataTrigger Binding="{Binding Path=SelectedItem.ID}" Value="0">
或者,您可以将另一个属性添加到decimal?
类型的MyClass
中,并将其用于DisplayMemberPath。
public decimal? DisplayValue { get => ID == 0 ? default(decimal?) : Value; }
https://stackoverflow.com/questions/51342567
复制相似问题