1

私は非常に単純なユーザー コントロール (visifire チャート + 日付ピッカー、およびフィルタリングを制御するためのラジオボタンなど) を取得しました。

<GroupBox Header="Scale" Width="159" HorizontalAlignment="Left" Margin="10,47,0,0"
          Height="38" VerticalAlignment="Top" Name="scalingBox">
    <Canvas Height="16">
        <RadioButton Name="scaleDays" Content="Days" GroupName="g2" Width="47"
                     IsChecked="True" Checked="scale_Change"/>
        <RadioButton Name="scaleHours" Content="Hours" GroupName="g2" Canvas.Left="60"
                     Width="59" Checked="scale_Change"/>
    </Canvas>
</GroupBox>

最初のビットはIsChecked、最初のボタンを true に設定しても、コントロールが表示されるときに何もしないということです。

回避策を探して、親ウィンドウから必要なボタンをチェックするパブリック メソッドをいくつか公開しましたが、これらのメソッドを複数MyControl呼び出すと、メソッドが最後に呼び出された 1 つのインスタンスのボタンのみがチェックされます。このような:

myControl1.SetDefaultScale();
myControl2.SetDefaultScale();

のボタンのみをチェックmyControl2し、グループ内のすべてのボタンのチェックを外したままにしmyControl1ます。

これを引き起こしている可能性のあるアイデアはありますか?


はい、すべてのコントロール間で共有されたのはグループ名でした...ありがとうAran

4

3 に答える 3

2

私はあなたのコードを取得し、それを新しいプロジェクトとメイン ウィンドウに配置しました。最初のボタンがチェックされました。

RadioButton にはいくつかのバグがあります。最初に、クリックするとバインドが失われますこちらを参照してください。グループ名がフォーム間で共有されている場合、他の人がそうであるように、あなたが説明した動作がありました。これらの問題を回避する方法は、各ラジオ ボタンを個別にバインドし、選択ロジックを自分で処理することです。(1 つが選択されている場合は、「グループ」内の他のプロパティがバインドされているプロパティを false に設定します)

次のリリースで修正されることを願っています。しかし、当面はすべてのラジオ ボタンを個別にバインドし、グループ名は使用しません。

于 2009-12-08T01:31:48.413 に答える
0

フォームでラジオ ボタンが 1 つしかチェックされない場合がある原因は、GroupName のスコープに関連しています。

ラジオ ボタンがあり、GroupName が指定されていないユーザー コントロールの 2 つのインスタンスを試してみたところ、ラジオ ボタンの効果の範囲はユーザー コントロール内のグループ ボックスに限定されていました。

ユーザー コントロールのラジオ ボタンに同じ GroupName が指定された場合、ウィンドウ内のすべてのラジオ ボタンが同じ GroupName を持ち、同じグループに含まれていました。一度にチェックできるのは、ウィンドウ全体のグループ内の 1 つのボタンだけです。

答えは、ラジオ ボタンから GroupName プロパティを削除し、GroupBox の自然なグループ化を有効にすることです。

于 2009-12-08T02:35:26.143 に答える