gpt4 book ai didi

C# MVVM : Binding a RadioButton to a boolean Property

转载 作者:行者123 更新时间:2023-12-02 12:15:12 24 4
gpt4 key购买 nike

我对编程还很陌生,目前正在学习 C# 和 MVVM 模式。

我需要为大学的 ChiliPlants 编写一个数据库工具。在那里,您应该能够向 ObservableCollection 添加新对象。

要将新项目添加到此 ObservableCollection,将打开一个新窗口。它看起来像这样: Window Add

我现在希望将两个 RadioBox 绑定(bind)到名为“HybridSeed”的属性。这是在 ViewModel 中定义的:

//Public Property HybridSeed
public bool HybridSeed
{
get { return ChiliModel.HybridSeed; }
set
{
if (ChiliModel.HybridSeed == value)
return;
ChiliModel.HybridSeed = value;
OnPropertyChanged("HybridSeed");
}
}

我的 View 的 RadioBox 部分如下所示:

 <RadioButton Grid.Row="5" Content="Ja" Grid.Column="1" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
<RadioButton Grid.Row="5" Content="Nein" Grid.Column="1" HorizontalAlignment="Left" Margin="89,10,0,0" VerticalAlignment="Top"/>

但是如何将用户单击这些 RadioButton 的结果绑定(bind)到此 HybridSeed 属性呢?重要的是结果是 bool 值。

我查找了几乎所有与该主题类似的条目,但没有找到简单的解决方案。或者我能够用我糟糕的编码技能理解的解决方案:( ...

如果你们能帮助我,我会很高兴。对于这个新手,请保持简单:)

如果有一个使用 CheckBox 或 ComboBox 的更简单的解决方案,那也将是完美的。最重要的是拥有一个漂亮的用户界面。目前,它仅适用于用户始终必须写入“True”或“False”的文本框。

解决方案:

我在“Yes”RadioButton 中添加了 IsClicked 属性,以将其绑定(bind)到我的 bool 属性:IsClicked="{Binding HybridSeed}"。感谢 naslund 的快速回答:)

最佳答案

只需将 HybridSeed 绑定(bind)到"is"单选按钮即可。如果用户选择了该选项,则该值为 true;如果选择了“无单选按钮”(或者未选择任何内容),则该值为 false。在这种情况下绑定(bind)到两个按钮有点多余,因为单选按钮的机制会处理它。

WPF:

<RadioButton Content="Yes" IsChecked="{Binding HybridSeed}" />
<RadioButton Content="No" />
<Label Content="{Binding HybridSeed}" ContentStringFormat="Value is: {0}" />

逻辑:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}

public class ViewModel : INotifyPropertyChanged
{
private bool hybridSeed;

public bool HybridSeed
{
get { return hybridSeed; }
set
{
hybridSeed = value;
OnPropertyChanged(nameof(HybridSeed));
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}

关于C# MVVM : Binding a RadioButton to a boolean Property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500843/

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