【问题标题】:Radio button on load in WPF MVVMWPF MVVM中加载单选按钮
【发布时间】:2014-04-25 14:16:39
【问题描述】:

我想在 WPF 应用程序中加载一个显示人员详细信息的屏幕。 我正在使用 MVVM 和 C#

我有一个加载个人详细信息的屏幕。 从列表中选择一个人,您按选择并加载该人的信息。 其中的数据是“性别” 在用户控件上,我使用单选按钮。一个是男的,一个是女的。 我想知道如何将结果绑定到单选按钮,以便您选择的人 Joe 显示为男性。

我不想将单选按钮用于显示目的。我只想显示那个人的性别。

是使用单选按钮的 Content 还是 IsSelected 绑定?我知道我应该使用绑定(显然,如果我使用的是 MVVM),但我不知道在哪里。

所以这个人有姓名(字符串)和性别(字符串)。性别字段是男性或女性。如何在 Binding 中使用它来显示选中的单选按钮?

我在 ViewModel 中声明了以下内容:

 public bool GenChecked { get; set; }

我猜从那里,我会说,如果 Gender 是 Male,IsSelected Gender 是真的吗?我不清楚。这是我第一次涉足 WPF MVVM 中的单选按钮

如果这个问题不清楚,或者你想看一些代码示例,请评论,我会进行编辑

编辑 1

只是为了清楚。如有任何误解,请见谅。 usercontrol/view 目前有两个单选按钮:

<RadioButton Content="Male" IsChecked="{Binding GenChecked}" />
<RadioButton Content="Female" IsChecked="{Binding GenChecked}" />

视图模型通过一个类获取信息,该类具有名称和性别作为字符串。班级的对象之一是男乔。

所以在我的视图模型上,我有 GenChecked 的布尔值。如果 Joe.Gender = "Male" 则必须选择男性单选按钮。但我认为如果我说 GenChecked 是真的,两者都会被选中?

这就是我困惑的地方。单选按钮必须分组吗?绑定必须相同吗?它必须绑定到内容吗?

希望这能更清楚一些

【问题讨论】:

  • 代码一样吗?你有两个不同的男性和女性单选按钮? [更新]你说一个人有性别(字符串),所以那在你的模型中?你的虚拟机有一个布尔值?
  • RadioButton 有一个 IsChecked 属性,您可以将任何布尔值绑定到该属性。但是你的确切问题是什么?

标签: c# wpf data-binding mvvm radio-button


【解决方案1】:

假设 true 是男性,false 是女性(不,我不想开始政治讨论)你可以做这样的事情

在您的 xaml 中

<RadioButton Content="Male" IsChecked="{Binding Gender"}/>
<RadioButton Content="Female" IsChecked="{Binding Gender, Converter={StaticResource BoolToOppositeBoolConverter}}"/>

然后写一个 IValueConverter (BoolToOppositeBoolConverter) 你有这样的代码

    public object Convert1(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var boolValue = bool.Parse(value.ToString());

        return !boolValue;
    }

【讨论】:

  • 这是使用 MVVM 规则吗? CultureInfo 的用途是什么? (使用系统。?)
  • 是的,MVVM 应用程序中使用 IValueConverter 接口来转换视图模型属性。这真的很好,因为您的视图模型中不需要第二个属性。看看msdn.microsoft.com/library/windows/apps/br209903
猜你喜欢
  • 1970-01-01
  • 2011-08-19
  • 2014-06-19
  • 2015-12-19
  • 2023-04-01
  • 2010-10-27
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多