在WPF中使用带有多个值的DataTrigger

Jai*_*dra 6 c# wpf xaml triggers multidatatrigger

我使用的是XAML代码的一部分

<DataTrigger Binding="{Binding Path=Name}" Value="1">
    <Setter Property="Header" TargetName="expanderHeader" Value="Course Text"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Name}" Value="2">
    <Setter Property="Header" TargetName="expanderHeader" Value="Media Lecture"/>
</DataTrigger>
<DataTrigger    Binding="{Binding Path=Name}" Value="3">
    <Setter Property="Header" TargetName="expanderHeader" Value="Assessment"/>

<DataTrigger Binding="{Binding Path=Name}" Value="4">
    <Setter Property="Header" TargetName="expanderHeader" Value="Question"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Name}" Value="5">
    <Setter Property="Header" TargetName="expanderHeader" Value="General"/>
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)

现在我想使用dataTrigger,其值可以是3,301,302或303.我该怎么做.我尝试使用Multidatatrigger,但它没有用.我尝试使用Multidatatrigger的代码是:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=Name}" Value="301"/>
        <Condition Binding="{Binding Path=Name}" Value="301"/>
        <Condition Binding="{Binding Path=Name}" Value="302"/>
        <Condition Binding="{Binding Path=Name}" Value="303"/>
        </MultiDataTrigger.Conditions>
    <Setter Property="Header" TargetName="expanderHeader" Value="Assessment"/>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)

Phi*_*hil 10

MultiDataTrigger适用于当所有的条件都满足没有任何,这就是为什么你MultiDataTrigger不工作.

要么有四个单独的触发器,要么将条件放入一个单独的布尔属性,如

bool ShowAssessment
{
    return Value == 301 || Value == 302 ...
}
Run Code Online (Sandbox Code Playgroud)

当值更改时,为ShowAssessment引发属性更改通知

例如

int Value { 
    get{ return _value; } 
    set { 
        _value = value; 
        RaisePropertyChanged("Value");
        RaisePropertyChanged("ShowAssessment");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后触发ShowAssessment.

可能更好的解决方案是添加一个带有switch语句的HeaderText属性,该语句返回基于的正确头文本Value.然后将标题的文本绑定到该文本.无需触发器.