WPF if基于单选按钮的语句是否已选中

时间:2013-03-25 16:29:21

标签: wpf checked jradiobutton

我遇到一些看起来应该很简单的问题。我来自Windows Forms并开始使用WPF。我想我有一个简单的语法问题,但我似乎无法找到这个单选按钮问题的具体示例。

我的GUI上有一个单选按钮,可以通过地图选择或列表运行查询。单击加载时,如果选择了map,则应执行一个操作,对列表执行不同的操作。代码看起来类似于:

private void Load_Click(object sender, RoutedEventArgs e)
{
  if (rdBtnList.Checked == true)
  {
    //do this
  }

  // if rdBtnList not checked (ie if rdBtnMap is checked)
  // do this
}

非常感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:4)

变化:

if (rdBtnList.Checked == true)

if (rdBtnList.IsChecked == true)

注意:

I'm coming from Windows Forms and starting up with WPF

  • 你必须忘记你在winforms中学到的一切,并拥抱MVVM。您应该创建一个ViewModel并将rdBtnList.IsChecked属性绑定到ViewModel中的某个布尔值,然后在那里执行您的逻辑。背后的视图代码不适合应用程序逻辑。

答案 1 :(得分:1)

WPF中的属性称为IsChecked,因此您只需更新if语句

if (rdBtnList.IsChecked == true) { 
  ...
}

WPF中IsChecked属性为bool?(可空值),因此您可以选择在此处更明确地执行以下操作

if (rdBtnList.IsChecked.HasValue && rdBtnList.IsChecked.Value) { 
  ...
}

答案 2 :(得分:0)

您是否错过了退货声明?按原样,发布的代码将始终执行if not checked path:

private void Load_Click(object sender, RoutedEventArgs e)
{
  if (rdBtnList.IsChecked == true)
  {
    //do this
    return; // return, or the if not checked path below will always win.
  }

  // if rdBtnList not checked (ie if rdBtnMap is checked)
  // do this
}

在WPF中,您需要使用IsChecked属性。有关详细信息,请参阅RadioButton Class