例:
■ 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.vbPublic 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 件のコメント:
コメントを投稿