【发布时间】:2018-08-30 13:58:25
【问题描述】:
我有一个带有扩展器的 WPF 应用程序,我希望在其中更改 IsExpanded 属性 基于我的视图模型中的枚举值,即我希望扩展器根据 这个枚举属性。我在 xaml 中使用数据触发器来更新基于 IsExpanded 的属性 关于我的枚举支持属性的值。
<Expander Header="Information and Procedures"
BorderThickness="0"
Margin="5">
<Expander.Style>
<Style TargetType="{x:Type Expander}" BasedOn="{StaticResource MetroExpander}">
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.Item.Match, RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}, Mode=TwoWay}"
Value="{x:Static enum:Match.Multiple}">
<Setter Property="IsExpanded" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.Item.Match, RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}, Mode=TwoWay}"
Value="{x:Static enum:Match.None}">
<Setter Property="IsExpanded" Value="True"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.Item.Match, RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}, Mode=TwoWay}"
Value="{x:Static enum:Match.Exact}">
<Setter Property="IsExpanded" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Expander.Style>
<WrapPanel Orientation="Horizontal" Background="Transparent">
<view:InformationView Margin="0 0 20 0"/>
<view:ProceduresView Margin="0 0 0 0" />
</WrapPanel>
</Expander>
在我们手动展开扩展器之前,这似乎有效。在此之后,似乎数据 触发器现在被忽略,手动设置的 IsExpanded 属性在用户之前不会改变 再次手动打开或关闭扩展器。
我希望用户能够手动展开或关闭它,但我希望数据触发器优先 超过用户输入。
注意:我不希望 IsExpanded 属性更改 Match 的值。 Match是单独更新的,但是它的值会影响IsExpanded
【问题讨论】: