通过Style和XAML中的触发器绑定窗口标题

4
我有这样的代码
<Window x:Class="SolutionName.ClassName"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300" WindowStartupLocation="CenterOwner">
<Window.Style>
    <Style TargetType="Window">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=ItemKind}" Value="SomeKind">
                <Setter Property="Title" Value="SomeTitle"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=ItemKind}" Value="SomeKind2">
                <Setter Property="Title" Value="SomeTitle"/>
            </DataTrigger>

我想根据视图模型(设置为数据上下文)中实现的ItemKind属性更改窗口标题。以上代码不起作用,我真的很困惑,因为找不到任何错误。


你在输出窗口中看到任何绑定错误吗? - Elad Katz
你在其他地方设置了标题吗? - H.B.
ItemKind是一个枚举类型吗?如果是,那么值必须使用值路径语法编写,或者您需要编写一个类型转换器。因此,不要使用Value="SomeKind",而是使用<DataTrigger.Value><MyEnum>SomeKind</MyEnum>... - dowhilefor
示例代码没有显示,但是你有为 Title 设置数据绑定的机会吗?如果是这样,它将会覆盖你的触发器。 这就是我的问题所在; 我通过在具有 Setter.Value 数据绑定的样式中设置 Title,然后使用触发器进行覆盖来解决了它。 - dlf
1个回答

2
代码看起来没问题,我这边也能运行。您的ViewModel类中是否实现了INotifyPropertyChanged接口?您需要实现它,以便在ViewModel类中的任何属性值更改时都能反映到UI上。

如何实现属性更改通知


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接