首页 > 解决方案 > 如何在组合框中的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 属性。

谢谢。

标签: c#wpfdatatrigger

解决方案


SelectedItem.ID在您的DataTrigger绑定路径中使用。

<DataTrigger Binding="{Binding Path=SelectedItem.ID}" Value="0">

或者,您可以改为将另一个属性添加到您MyClass的类型decimal?并将其用于 DisplayMemberPath。

public decimal? DisplayValue { get => ID == 0 ? default(decimal?) : Value; }

推荐阅读