我正在使用 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>
现在我想使用一个值为 3、301、302 或 303 的 dataTrigger。我该怎么做。 我尝试使用 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>
最佳答案
MultiDataTrigger 在满足所有而不是任何条件时应用,这就是您的 MultiDataTrigger 不工作的原因。
要么有四个单独的触发器,要么将条件放入单独的 bool 属性中,例如
bool ShowAssessment
{
return Value == 301 || Value == 302 ...
}
当 Value 更改时为 ShowAssessment 发出属性更改通知
例如
int Value {
get{ return _value; }
set {
_value = value;
RaisePropertyChanged("Value");
RaisePropertyChanged("ShowAssessment");
}
}
然后在 ShowAssessment 上触发。
可能更好的解决方案是添加一个带有 switch 语句的 HeaderText 属性,该语句根据 Value
返回正确的标题文本。然后只需将标题的文本绑定(bind)到那个。无需触发器。
关于c# - 在 WPF 中使用具有多个值的 DataTrigger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207318/