我已经声明了我的依赖属性如下:
在XAML中,我想要一个触发器,基于我的依赖属性的值来触发样式。在这种情况下,如果
然后我发现CanSave从未设置为true,于是我进行了操作。
但是看起来
public bool CanSave
{
get { return (bool)GetValue(CanSaveProperty); }
set { SetValue(CanSaveProperty, value); }
}
public static readonly DependencyProperty CanSaveProperty =
DependencyProperty.Register("CanSave", typeof(bool), typeof(EditorTabViewModel), new PropertyMetadata(false));
在XAML中,我想要一个触发器,基于我的依赖属性的值来触发样式。在这种情况下,如果
CanSave
为true,则加粗。<Style x:Key="CanSaveIndicatorHeader">
<Style.Triggers>
<Trigger Property="{Binding CanSave}" Value="True">
<Setter Property="TextBlock.FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
我遇到了错误:
无法在“触发器”的类型为“属性”的“Property”属性上设置“绑定”。只能在DependencyObject的DependencyProperty上设置“绑定”。
我可能做错了什么。有人可以指正一下吗?
更新:回应@Bryan Watts
好的,我做了类似于以下的事情:
<Style.Triggers>
<Trigger Property="vm:EditorTabViewModel.CanSave" Value="true">
<Setter Property="TextBlock.FontWeight" Value="Bold" />
</Trigger>
<Trigger Property="vm:EditorTabViewModel.CanSave" Value="false">
<Setter Property="TextBlock.Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
然后我发现CanSave从未设置为true,于是我进行了操作。
<TextBox ... Text="{Binding Path=Content, UpdateSourceTrigger=PropertyChanged}" />
当内容更改时,由于CanSave设置为true
public string Content
{
...
set
{
if ((bool)GetValue(CanSaveProperty) == false)
{
SetValue(CanSaveProperty, true);
RaisePropertyChanged("CanSave");
}
_content = value;
}
}
但是看起来
<Trigger Property="vm:EditorTabViewModel.CanSave" Value="true">
字体未加粗,可能是因为 WPF 没有检测到修改?
CanSave
属性的声明吗?你使用的语法,包含命名空间和类名,暗示它是一个附加属性。你尝试过使用CanSave
而不是vm:EditorTabViewModel.CanSave
进行最近的更新了吗? - Bryan WattsCanSave
的声明吗?还是你要求别的什么内容?如果我只写了CanSave
,会出现以下提示信息:"Cannot resolve the Style Property 'CanSave'. Verify that the owning type is the Style's TargetType, or use Class.Property syntax to specify the Property"。 - Jiew Meng