2010-12-29 11 views
3

私は2つのラジオボタンを持っています。チェックされていないwpfラジオボタン

1つ(rb1)は、私のViewModelのプロパティにバインドされています。プロパティがtrueの場合、アプリケーションがロードされたときにrb1がチェックされます。プロパティがfalseの場合、rb1はチェックされていません(そうです)。

最後のケースでは、両方のラジオボタンがチェックされておらず、2番目のラジオボタンが必要です。プロパティがfalseの場合、(rb2)がチェックされています。どうすればいい?

+0

したがって、2つのラジオボタンがあります。これらの両方が同じプロパティにバインドされていますか?プロパティ値がtrueのときは、rb1チェックとrb2のチェックを外し、falseのときはrb1のチェックを外し、rb2のチェックが必要ですか? – decyclone

+0

使用している.NETのバージョンは何ですか? .NET 4で修正されたラジオボタンのデータバインドに問題がありました。 –

答えて

0

問題は、データバインディングが「失われている」ことです。私はMatt Thalmanを引用してみましょう:

クリックは、(例えば、 クリックバーはfooと チェックバーのチェックを外します)が正しく ボタンのUIの状態を変更することになります。しかし、その時点で のIsFooとIsBarの基礎値 が変更された場合、 ボタンにはIsChecked 状態が更新されないことに気付きました。 Snoopツールを使用して、 ボタンの1つをクリックした後、IsChecked状態 が手動で状態を設定していることがわかりました。依存性プロパティー を手動で に設定すると、Bindingが失われます。この は、バインドされているプロパティ が更新されたときにIsChecked状態が に変更されなかった理由です。

public class DataBoundRadioButton : RadioButton 
{ 
    protected override void OnChecked(RoutedEventArgs e) 
    { 
      // Do nothing. This will prevent IsChecked from being manually set and overwriting the binding. 
    } 

    protected override void OnToggle() 
    { 
      // Do nothing. This will prevent IsChecked from being manually set and overwriting the binding. 
    } 
} 

は詳細についてはthis blog entryを参照してください:

簡単な解決策は、RadioButtonクラスをサブクラス化することです。

+0

AFAIK、.NET 4.0ではこのバグが修正されました。この問題に直面せずにRadioButtonsの値をバインドできるはずです。 –

関連する問題