【问题标题】:Set Width in WPF with DataTrigger使用 DataTrigger 在 WPF 中设置宽度
【发布时间】:2014-03-13 03:29:04
【问题描述】:

我有一个包含其他项目的边框(带有按钮的 StackPanel)。当“IsHidden”属性切换为 true 时,我正在使用 DataTrigger 尝试缩小边框。我确信绑定是正确的,并且 DataContext 中的属性正在更改并且 UI 正在收到通知。问题是 Width 属性没有被设置。

有什么想法吗?

<Border Width="200" Background="{StaticResource BasicBrush}" Padding="0"
        BorderBrush="{StaticResource MainBrush}" BorderThickness="0 10 10 0">
    <Border.Style>
        <Style TargetType="{x:Type Border}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsHidden}" Value="True">
                    <Setter Property="Width" Value="50"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>

【问题讨论】:

    标签: wpf


    【解决方案1】:

    将属性移到样式设置器中,它会正常工作。 本地值的优先级高于样式触发器。因此,样式触发器中的任何属性更改都不会更改本地值。

    <Style>
      <Setter Property="Width" Value="200"/>
      <Style.Triggers>
        .....
      </Style.Triggers>
    </Style>
    

    您可以在此处阅读更多信息 - Dependency Property Value Precedence

    【讨论】:

    • 如果有人读到这个 ​​- 我有同样的问题,一个数据触发器不工作,我没有一个本地值,我有一个和答案一样的设置器,但它在数据触发器下面,没有' 认为这并不重要,但是当我首先制作 setter 时,datatrigger 开始工作。所以顺序也很重要。
    【解决方案2】:

    找到答案here。它与样式优先级有关。我需要将 Width 的设置从 Border 元素中移出并移到如下所示的样式设置器中。

    <Border Background="{StaticResource BasicBrush}" Padding="0"
            BorderBrush="{StaticResource MainBrush}" BorderThickness="0 10 10 0">
        <Border.Style>
            <Style TargetType="{x:Type Border}">
                <Setter Property="Width" Value="200"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsHidden}" Value="True">
                        <Setter Property="Width" Value="50"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>
    

    【讨论】:

    • 这不是样式优先级,而是关于 DP 值优先级。请参阅我在答案中发布的链接以获得清晰的图片。
    猜你喜欢
    • 2018-06-03
    • 2010-12-25
    • 2011-08-17
    • 2013-08-26
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多