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