Я объявил свои свойства зависимостей следующим образом
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>
я получаю сообщение об ошибке
Невозможно установить «Связывание» в свойстве «Свойство» типа «Триггер».».«Связывание» можно установить только для свойства DependencyProperty объекта DependencyObject.
Возможно, я что-то не так делаю.Может кто-нибудь поправить меня?
ОБНОВЛЕНИЕ: В ответ на @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 не обнаруживает изменения?