C# 是否存在WPF复选框控件切换事件?
考虑到WPF控件,如何知道复选框的值是否已更改(切换) 我知道有一些常见的C# 是否存在WPF复选框控件切换事件?,c#,wpf,checkbox,toggle,C#,Wpf,Checkbox,Toggle,考虑到WPF控件,如何知道复选框的值是否已更改(切换) 我知道有一些常见的已选中,未选中,单击事件,但是当值发生变化时,不管它是如何变化的,事件又如何呢 我查看了这些事件,但没有发现任何东西,但可能我遗漏了明显的内容(就像过去多次发生的那样)。您可以将IsChecked依赖性属性绑定到布尔值。在绑定属性设置器上,您可以操作所需的内容(如果将其设置为true或false,则可以独立操作)。这和预期的一样 在你看来: <Grid> <CheckBox ... IsChe
已选中
,未选中
,单击
事件,但是当值发生变化时,不管它是如何变化的,事件又如何呢
我查看了这些事件,但没有发现任何东西,但可能我遗漏了明显的内容(就像过去多次发生的那样)。您可以将
IsChecked
依赖性属性绑定到布尔值。在绑定属性设置器上,您可以操作所需的内容(如果将其设置为true或false,则可以独立操作)。这和预期的一样
在你看来:
<Grid>
<CheckBox ... IsChecked="{Binding ShowPending}"/>
</Grid>
根据Randolf的答案,只需创建一个表示窗口的类。 在新类中,创建一个名为BlahIsChecked的属性。在类中实现INotifyPropertChangedEvent,并在新属性的setter中激发具有属性名称的事件
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类并说出以下内容:DataContext=newmainmodel();您可以在WPF或c#中执行此操作
现在在复选框xaml中执行以下操作
<checkbox Checked="{Binding BlahIsChecked, Mode=TwoWay}"/>
我是凭记忆做的,但应该让你开始。祝你好运。你最好的选择可能是
IsChecked
属性。但是如果您需要一个事件,您可以考虑创建一个事件并用该方法注册一个处理程序
我认为这差不多是您将得到的一个事件通知,即复选框的值已更改。创建描述符并添加处理程序如下所示:
var dpd = DependencyPropertyDescriptor.FromProperty(CheckBox.IsChecked, typeof(CheckBox));
dpd.AddValueChanged(...);
我知道这已经有了一个公认的答案,但是绑定在这个问题上有点过头了
只需编写一个事件处理程序并将其连接到已检查和未检查的事件,然后检查事件处理程序中的IsChecked属性。我从未使用过绑定,现在尝试您的建议时,我有点困惑。你能给我举个简单的例子吗?如果我很痛苦,很抱歉,但这可以完全用C完成吗?我希望尽可能远离XAML编辑。@IneedHelp,因为您可以看到一切都是在C#中完成的。视图部分可以替换为普通的C#(声明复选框并在IsChecked上设置绑定)。@RandolfR-F当从代码隐藏或WPF更改时,您的答案是否切换IsChecked属性?我认为如果没有INotifyPropertyChanged继承,当源代码发生变化时,从源代码到目标代码只能是单向的?我认为tylergarland将处理来自和notify的更改。事实上,我认为数据绑定比一个新的事件处理程序更简单。此外,您可以在没有对象的情况下选中或取消选中复选框。它们都是可接受的解决方案。我更喜欢我的绑定,因为在将控件附加到实际数据对象时,我不希望在控件上使用多个绑定。还有一些维护需要考虑,我觉得如果事件是在实际的事件处理程序上处理的,而不是隐藏在绑定中,那么在哪里处理事件就更清楚了。
var dpd = DependencyPropertyDescriptor.FromProperty(CheckBox.IsChecked, typeof(CheckBox));
dpd.AddValueChanged(...);