0

いくつかの質問を自動生成する DataTemplate を作成しました (データビューからロード)。各質問には 4 つのラジオ ボタンがあり、4 つのボタンすべてを GroupName でグループ化します。

私の問題は、2 つまたは 3 つの質問がある場合、1 つの質問のラジオ ボタンをオンにすると、上の質問のラジオ ボタンがオフになることです。誰もこれに対する解決策を持っていますか?

ここに私のXAMLがあります:

<ItemsControl Name="itmCntrl" >
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal" ></WrapPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Name="stk">
                <StackPanel Margin="5,2,0,0">
                    <WrapPanel Margin="10,10,10,5" Height="Auto">
                        <TextBlock TextWrapping="Wrap" x:Name="tbC"  FontSize="18" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" Text="Question : "/>
                        <TextBlock TextWrapping="Wrap" Text="{Binding NOIDUNG}" FontSize="18" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black"/>
                    </WrapPanel>
                    <WrapPanel Margin="10,5,10,5" Height="Auto">
                        <RadioButton x:Name="rdoA" GroupName="DA"/>
                        <TextBlock TextWrapping="Wrap" Name="A" Text="{Binding A}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
                        <RadioButton x:Name="rdoB" GroupName="DA" Margin="10,0,0,0"/>
                        <TextBlock TextWrapping="Wrap" Name="B" Text="{Binding B}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
                    </WrapPanel>
                    <WrapPanel Margin="10,5,10,5" Height="Auto">
                        <RadioButton x:Name="rdoC" GroupName="DA"/>
                        <TextBlock TextWrapping="Wrap" Name="C" Text="{Binding C}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
                        <RadioButton x:Name="rdoD" GroupName="DA" Margin="10,0,0,0"/>
                        <TextBlock TextWrapping="Wrap" Name="D" Text="{Binding D}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
                    </WrapPanel>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
4

2 に答える 2

3

RadioButton.GroupNameプロパティは です。つまりDependencyProperty、各グループに一意の値をデータ バインドできます。

<DataTemplate>
    <StackPanel Name="stk">
        <StackPanel Margin="5,2,0,0">
            <WrapPanel Margin="10,10,10,5" Height="Auto">
                <TextBlock TextWrapping="Wrap" x:Name="tbC"  FontSize="18" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" Text="Question : "/>
                <TextBlock TextWrapping="Wrap" Text="{Binding NOIDUNG}" FontSize="18" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black"/>
            </WrapPanel>
            <WrapPanel Margin="10,5,10,5" Height="Auto">
                <RadioButton x:Name="rdoA" GroupName="{Binding GroupName}"/>
                <TextBlock TextWrapping="Wrap" Name="A" Text="{Binding A}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
                <RadioButton x:Name="rdoB" GroupName="{Binding GroupName}" Margin="10,0,0,0"/>
                <TextBlock TextWrapping="Wrap" Name="B" Text="{Binding B}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
            </WrapPanel>
            <WrapPanel Margin="10,5,10,5" Height="Auto">
                <RadioButton x:Name="rdoC" GroupName="{Binding GroupName}"/>
                <TextBlock TextWrapping="Wrap" Name="C" Text="{Binding C}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
                <RadioButton x:Name="rdoD" GroupName="{Binding GroupName}" Margin="10,0,0,0"/>
                <TextBlock TextWrapping="Wrap" Name="D" Text="{Binding D}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
            </WrapPanel>
        </StackPanel>
    </StackPanel>
</DataTemplate>

この例を機能させるGroupNameには、 でデータ バインドしているビュー モデルにプロパティを追加するだけですDataTemplateABCおよびDプロパティを持つオブジェクト。

于 2015-04-17T12:37:13.143 に答える
0

ソース Obj を Itemcontrol にバインドするため、別の方法を見つけたので、次の方法を使用します。

<WrapPanel Margin="10,5,10,5" Height="Auto">
<RadioButton x:Name="rdoA" GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=A}"/>
<TextBlock TextWrapping="Wrap" Name="A" Text="{Binding A}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
<RadioButton x:Name="rdoB" Margin="10,0,0,0" GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=B}"/>
<TextBlock TextWrapping="Wrap" Name="B" Text="{Binding B}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
<TextBlock Text="&#xD;"/>
<RadioButton x:Name="rdoC" GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=C}"/>
<TextBlock TextWrapping="Wrap" Name="C" Text="{Binding C}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
<RadioButton x:Name="rdoD" GroupName="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=D}" Margin="10,0,0,0"/>
<TextBlock TextWrapping="Wrap" Name="D" Text="{Binding D}" FontSize="15" FontFamily="Times New Roman" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="Black" Margin="3,0,0,0"/>
</WrapPanel>

これはうまくいきますが、4 つのラジオ ボタンすべてを 1 つの WrapPanel にグループ化する必要があります。これは、それらを 2 つのパネルに分割すると、独自のグループ名を持つことになるためです。しかし、それらの4つを1つのWrapPanelにグループ化すると、見栄えが悪くなります(1)。(1)ではなく(2)のようなものが欲しいからです

(2) (質問)

(ア) (ロ)

(CD)

いいえ

(1)

(質問)

(ア) (ロ) (ハ)

(ニ)

とにかく、助けてくれてありがとう:)

于 2015-04-17T12:57:14.560 に答える