例:
■ Mode.vb
プログラムを実行するとボタンが2つ表示され、右型のボタンをクリックすると、左側ボタンの表示名が "True" → "False" … と変化する。
これをDataTriggerで "はい" → "いいえ" … と表示するようにしたい。
→ MainWindow.xamlを以下のように修正
■ MainWindow.xaml
これで目的通りの動作となった。
■ Mode.vb
Imports System.ComponentModel Public Class Model Implements INotifyPropertyChanged Private _Checked As Boolean = False Public Property Checked As Boolean Get Return _Checked End Get Set(value As Boolean) If (_Checked <> value) Then _Checked = value RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("Checked")) End If End Set End Property Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged End Class■ ClickCommand.vb
Public Class ClickCommand Implements ICommand Private _Model As Model Public Sub New(inModel As Model) _Model = inModel End Sub Public Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged Public Sub Execute(parameter As Object) Implements ICommand.Execute _Model.Checked = _Model.Checked Xor True End Sub Public Function CanExecute(parameter As Object) As Boolean Implements ICommand.CanExecute Return True End Function End Class■ ViewModel.vb
Public Class ViewModel Public ReadOnly Property Model As New Model() Public ReadOnly Property Click As New ClickCommand(Model) End Class■ MainWindow.xaml
: <Canvas> <Button x:Name="button" Content="{Binding Model.Checked}" Canvas.Left="60" Canvas.Top="46" Width="75" /> <Button x:Name="button1" Content="Button" Canvas.Left="194" Canvas.Top="46" Width="75" Command="{Binding Click}" /> </Canvas> :■ MainWindow.xaml.vb
Class MainWindow Private _ViewModel As New ViewModel() Public Sub New() ' この呼び出しはデザイナーで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 DataContext = _ViewModel End Sub End Class
プログラムを実行するとボタンが2つ表示され、右型のボタンをクリックすると、左側ボタンの表示名が "True" → "False" … と変化する。
これをDataTriggerで "はい" → "いいえ" … と表示するようにしたい。
→ MainWindow.xamlを以下のように修正
■ MainWindow.xaml
: <Window.Resources> <Style TargetType="Button" x:Key="YesNoStyle"> <Setter Property="Content" Value="いいえ" /> <Style.Triggers> <DataTrigger Binding="{Binding Model.Checked}" Value="True"> <Setter Property="Content" Value="はい" /> </DataTrigger> </Style.Triggers> </Style> </Window.Resources> <Canvas> <Button x:Name="button" Style="{StaticResource YesNoStyle}" Canvas.Left="60" Canvas.Top="46" Width="75" /> <Button x:Name="button1" Content="Button" Canvas.Left="194" Canvas.Top="46" Width="75" Command="{Binding Click}" /> </Canvas> :
これで目的通りの動作となった。
次回記事:WPF #5:ウインドウを画面中央に表示するには?
WPF学習, DataTrigger
0 件のコメント:
コメントを投稿