WPF コントロールについて考えると、チェック ボックスの値が変更 (トグル) されたかどうかはどうすればわかりますか?
Checked
、 、 共通のUnchecked
イベントがあることは知っていClicked
ますが、どのように変更されたかに関係なく、値が変更されたときのイベントはどうですか?
イベントに目を通しましたが、何も見つかりませんでしたが、明らかなことを見逃している可能性があります (過去に何度も発生しているため)。
IsChecked
依存関係プロパティをブール値にバインドするだけです。そのバインドされたプロパティ セッターで、必要なものを操作できます (それが true または false に設定されているかどうかに関係なく)。それは期待どおりに機能します。
あなたの見解では:
<Grid>
<CheckBox ... IsChecked="{Binding ShowPending}"/>
</Grid>
DataContext ViewModel または CodeBehind で。
private bool showPending = false;
public bool ShowPending
{
get { return this.showPending; }
set
{
//Here you mimic your Toggled event calling what you want!
this.showPending = value;
}
}
これにはすでに受け入れられている答えがあることは知っていますが、これに対するバインディングは少しやり過ぎです。
1 つのイベント ハンドラーを作成し、それを Checked イベントと Unchecked イベントの両方に接続してから、イベント ハンドラー内の IsChecked プロパティをチェックするだけです。
ランドルフの答えから外れて、ウィンドウを表すクラスを作成するだけです。新しいクラスで、BlahIsChecked というプロパティを作成します。INotifyPropertChangedEvent をクラスに実装し、新しいプロパティのセッターで、プロパティ名でイベントを発生させます。
class Blah : INotifyPropertyChanged
{
// Used for triggering the event
public event PropertyChangedEventHandler PropertyChanged;
// Called when the property changes
protected void OnPropertyChanged(String propertyName)
{
// Retrieve handler
PropertyChangedEventHandler handler = this.PropertyChanged;
// Check to make sure handler is not null
if(handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
private bool _blahIsChecked;
public bool BlahIsChecked
{
get {
return _blahIsChecked;
}
set {
_blahIsChecked = value;
OnPropertyChanged("BlahIsChecked);
}
}
}
次に、wpf クラスに移動して、 this.DataContext = new MainModel(); と言います。これは、WPF または C# で実行できます。
チェックボックスxamlで次のようにします
<checkbox Checked="{Binding BlahIsChecked, Mode=TwoWay}"/>
私は記憶からこれを行いましたが、始める必要があります。幸運を。
あなたの最良の選択肢は、おそらくIsChecked
プロパティです。ただし、イベントが必要な場合はDependencyPropertyDescriptor
、メソッドを作成してハンドラーを登録することを検討できますAddValueChanged
。
これは、チェック ボックスの値が変更されたというイベント通知にほぼ近いと思います。記述子の作成とハンドラーの追加は次のようになります。
var dpd = DependencyPropertyDescriptor.FromProperty(CheckBox.IsChecked, typeof(CheckBox));
dpd.AddValueChanged(...);