gpt4 book ai didi

c# - 如何将 WPF CheckBox 绑定(bind)到条件?

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:12 24 4
gpt4 key购买 nike

查看模型

public class MyViewModel
{
public string MyProperty { get; set; }
}

XAML

<CheckBox IsChecked="{Binding !MyProperty.Equals('Steve')}" />

这可能吗?如何?

最佳答案

这种事情可以在 Xaml 中完成(许多人说应该完成),而不涉及 View 模型中的逻辑。要查看它的工作原理,请像这样创建一个 View 模型...

public class ViewModel : INotifyPropertyChanged
{
private string _myProperty;
public string MyProperty
{
[DebuggerStepThrough]
get { return _myProperty; }
[DebuggerStepThrough]
set
{
if (value != _myProperty)
{
_myProperty = value;
OnPropertyChanged("MyProperty");
}
}
}
#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string name)
{
var handler = System.Threading.Interlocked.CompareExchange(ref PropertyChanged, null, null);
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
#endregion
}

然后将它绑定(bind)到一些看起来像这样的 Xaml...

<Grid>
<CheckBox Content="Some check box">
<CheckBox.Style>
<Style TargetType="CheckBox">
<Setter Property="IsChecked" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MyProperty}" Value="Steve">
<Setter Property="IsChecked" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
</Grid>

这是一个带有数据触发器样式的标准 WPF 复选框。只要“MyProperty”属性包含“Steve”,触发器就会将 IsChecked 属性设置为 true。否则 CB 将被取消选中(根据样式中的重写 setter )。它之所以有效,是因为触发器监听 VM 的“MyProperty”中的更改。因此,可视化完全属于用户界面。

可以组合触发器(甚至与模板选择器一起使用)以访问 WPF 内置的强大功能;它们将绑定(bind)到复选框上的任何依赖属性,如背景颜色等。

关于c# - 如何将 WPF CheckBox 绑定(bind)到条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com