11

ユーザー コントロールの個別の繰り返しインスタンスを表示するために、WPF タブ コントロールを使用しています。つまり、Item1 の設定には Tab1、Item2 の設定には Tab2 などです。

ラジオ ボタン グループ名がタブ間で共有されているようです。何が起こっている?

簡単な例:

ウィンドウにはタブが含まれています。各タブには、ユーザー コントロールが含まれています。

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lib="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Grid>
    <TabControl Margin="0,0,0,100" Name="tabControl1">
        <TabItem Header="tabItem1" Name="tabItem1">
            <lib:UserControl1 x:Name="userControlInTab1" />
        </TabItem>
        <TabItem Header="tabItem2" Name="tabItem2">
            <lib:UserControl1 x:Name="userControlInTab2" />
        </TabItem>
    </TabControl>
</Grid>

ユーザー コントロールは、グループ内の 2 つのラジオボタンです。

<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="50" Width="100">
<StackPanel>
    <RadioButton GroupName="Group1" Name="radiobutton1" Content="option1" IsChecked="True" />
    <RadioButton GroupName="Group1" Name="radiobutton2" Content="option2" />
</StackPanel>

このアプリを実行すると、起動時に常にチェックされるようにユーザーコントロールが定義されているにもかかわらず、2 番目のタブの radiobutton1 のみがチェックされていることがわかります。

さらに、ラジオボタンをコードビハインドでチェック済みとして設定すると、他のタブのすべてのラジオボタンがオフになっているようです!

マウスの制御下では問題なく動作するようです (つまり、タブは独立しています)。

最後に、ユーザーコントロールは個別のインスタンス化のようです。たとえば、ユーザーコントロールのスライダーでこれを試してみましたが、タブ間で独立して動作します。彼らがすべきように。

これについて誰か助けてくれてありがとう。私は無駄に広く検索しました。確かに、この問題を抱えているのは私だけではありません。私はVS2008を使用しています。

4

3 に答える 3

16

GroupName を設定しなくても機能します。いずれにせよ、1 つのコンテナー内の RadioButton は自動的にグループ化されるため、厳密には必要ありません。例えば:

<UserControl x:Class="WpfApplication1.UserControl1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Height="50" Width="100">
    <StackPanel>
        <StackPanel>
            <RadioButton  Name="radiobutton1" Content="option1" IsChecked="True" />
            <RadioButton  Name="radiobutton2" Content="option2" />
        </StackPanel>
        <StackPanel>
            <RadioButton  Name="radiobutton3" Content="option3" IsChecked="True" />
            <RadioButton  Name="radiobutton4" Content="option4" />
        </StackPanel>
    </StackPanel>
</UserControl>
于 2010-05-20T07:11:29.330 に答える