ボタンの一部ではないViewModelプロパティに応じて、ボタンのスタイルを設定したいと思います。
だから私は以下を作成しました
ボタンXAML:
<Button Content="DisableButton"
Height="27"
HorizontalAlignment="Left"
Margin="95,197,0,0"
VerticalAlignment="Top"
Width="120"
Style="{DynamicResource ButtonOffline}"
Click="ButtonDisableClick">
</Button>
スタイル(プロパティ付きのトリガーは機能しません。DataTriggerも試してみました)
<Grid.Resources>
<Style x:Key="ButtonOffline" TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsOnline}" Value="false">
<Setter Property="Background" Value="#FF808080"></Setter>
<Setter Property="BorderBrush" Value="Red"></Setter>
<Setter Property="BorderThickness" Value="5"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsOnline}" Value="true">
<Setter Property="Background" Value="#FF990000"></Setter>
<Setter Property="BorderBrush" Value="Blue"></Setter>
<Setter Property="BorderThickness" Value="2"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
プロパティ
private bool isOnline;
public bool IsOnline
{
get
{
return isOnline;
}
set
{
isOnline = value;
NotifyPropertyChanged("IsOnline");
}
}
そして私のクリックハンドラー
private void ButtonDisableClick(object sender, RoutedEventArgs e)
{
var isOnline = (this.DataContext as ComboBoxSampleViewModel).IsOnline;
(this.DataContext as ComboBoxSampleViewModel).IsOnline = !isOnline;
}
ボタンをクリックすると、絵コンテのようなものが始まり、アニメーションのようにボタンの色が変わり始めます。
コードの何が問題になっていますか?
アップデート ここに掲載されているボタン機能だけの小さなサンプルで再現。ここに掲載されていないもの(基本的なINotifyPropertyChanged実装を除く)は他にありません。