1

我在一些看起来应该很简单的事情上遇到了困难。我来自 Windows 窗体并开始使用 WPF。我想我有一个简单的语法问题,但我似乎找不到这个单选按钮问题的具体示例。

我的 GUI 上有一个单选按钮,用于通过地图选择或列表运行查询。单击加载时,如果选择地图,则应执行一项操作,而列表则应执行不同的操作。代码与此类似:

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
}

任何帮助将不胜感激。谢谢。

4

3 回答 3

7

改变:

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 中的某个布尔值,然后在其中执行您的逻辑。视图背后的代码不是应用程序逻辑的正确位置。
于 2013-03-25T16:33:56.303 回答
1

调用 WPF 中的属性,IsChecked因此您只需要更新if语句

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

IsChecked属性是bool?WPF 中的(可为空的值),因此您可以通过执行以下操作来选择更明确

if (rdBtnList.IsChecked.HasValue && rdBtnList.IsChecked.Value) { 
  ...
}
于 2013-03-25T16:34:55.383 回答
0

您是否缺少退货声明?照原样,发布的代码将始终执行 if not checked 路径:

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 类。

于 2013-03-25T16:34:02.560 回答