c# - 在 WPF 中使用具有多个值的 DataTrigger

标签 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>

现在我想使用一个值为 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/

相关文章:

c# - 在主从 View 中聚合详细信息值

c# - 触发其他控制事件时触发控制事件

c# - 实现IDataErrorInfo接口(interface)时 `public string this[string columnName]`是什么意思?

wpf - 具有 sharedsizegroup 的网格列在折叠或不可见时不是 'reclaim' 大小

c# - WPF 中的数组值绑定(bind)

c# - DockingManager 是否带有用于处理 Anchorables 的内置方法

c# - 如何允许安装服务而不提示输入用户 ID、密码、确认密码

c# - 如何确定自从我的程序上次运行后 PC 是否已重新启动?

c# - Wcf异常处理

c# - WPF - 创建带有图标的 ListView