1

とてもシンプルなはずなのに苦労しています。私はWindowsフォームから来て、WPFで起動しています。単純な構文の問題があると思いますが、このラジオボタンの問題の具体的な例が見つからないようです。

GUIに、マップ選択またはリストを介して実行するクエリ用のラジオボタンがあります。ロードをクリックすると、マップが選択されている場合は1つの操作を実行し、リストに対しては別の操作を実行する必要があります。コードは次のようになります。

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

  • WinFormで学んだことをすべて忘れて、MVVMを採用する必要があります。ViewModelを作成し、rdBtnList.IsCheckedプロパティをViewModelのブール値にバインドしてから、そこでロジックを実行する必要があります。ビューの背後にあるコードは、アプリケーションロジックに適した場所ではありません。
于 2013-03-25T16:33:56.303 に答える
1

WPFのプロパティが呼び出されるため、ステートメントIsCheckedを更新する必要がありますif

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

IsCheckedプロパティはWPFでは(null許容値)であるため、次のbool?手順を実行して、ここでより明示的にすることを選択できます。

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

returnステートメントがありませんか?現状では、投稿されたコードは、チェックされていない場合は常にパスを実行します。

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 に答える