我有一个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。
Match
的哪些值允许用户手动打开/关闭Expander
? - Scroog1Match
中的更改会覆盖当前状态,但用户可以在Match
更改之间修改状态吗? - Scroog1