私はWPFを始めていますが、データバインディングの実装に少し苦労しています。
具体的には、ラベルとボタンを保持する単純なユーザーコントロールを作成しました。このユーザーコントロール用に、string
「Text」とSimpleEnum
「Status」の2つのプロパティのみを保持するViewModelを作成しました。
コントロールのポイントは、「接続済み」はい/いいえなどのステータスを表示することです。ボタンの背景色はステータスを示します。
私のXAMLは次のようになります
<Control.DataContext>
<vm:OnOffStatusViewModel />
</Control.DataContext>
<Label x:Name="label1" Height="Auto" HorizontalAlignment="Left" Content="{Binding Text}" Width="280" />
<Button Style="{StaticResource GlassButton}" Height="14" Width="14" Background="{Binding Status}" Grid.Column="1" />
とxmlns:vm="clr-namespace:Controls"
コードビハインドにはViewModel
、ビューモデルを公開し、INotifyPropertyChangedを実装し、次のように初期化するプロパティがあります。_viewModel = (OnOffStatusViewModel) DataContext;
これで、このコントロールを使用しているビューでは、テキストを何かに設定できました。これは、ビューのコードビハインドを実装している場合と同じですがonOffStatus1.ViewModel.Text = ...
、ステータスは列挙型によって設定されるため、実際にはバインドできません。ボタンのbackgroundプロパティ。
これに関連する私の質問:
私がコントロールを行った方法は正しいですか?そうでない場合、ユーザーコントロールにデータバインディングを実装する適切な方法は何ですか?
バインディングを使用して列挙型ステータスでボタンのbackgroundプロパティを更新するにはどうすればよいですか?