【发布时间】:2011-04-26 12:19:07
【问题描述】:
我已经声明了我的依赖属性如下
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 为真,则为粗体
<Style x:Key="CanSaveIndicatorHeader">
<Style.Triggers>
<Trigger Property="{Binding CanSave}" Value="True">
<Setter Property="TextBlock.FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
我收到了错误
无法在 “触发器”类型的“属性”属性。 “绑定”只能设置在 a 的 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">
nv 发生是因为字体从不粗体。似乎 WPF 没有检测到更改?
【问题讨论】:
标签: c# wpf dependency-properties