0

我制作了一个 DataTemplate,它会自动生成一些问题(从我的数据视图加载)。每个问题都有四个单选按钮,我将所有四个按钮分组到 GroupName。

我的问题是 - 如果我有 2 或 3 个问题,只要我选中一个问题的单选按钮,上述问题的单选按钮就会被取消选中。有人对此有解决方案吗?

这是我的 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属性是 a ,这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属性添加到视图模型中,即在 中将数据绑定到该视图模型DataTemplate。具有AB和属性C的对象。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 个面板,它们将有自己的组名。但是 1 个 WrapPanel 中的 4 组让它们看起来很糟糕 (1),因为我想要一些类似 (2) 的东西,而不是 (1)

(2)(问题)

(A) (B)

(C) (D)

不是

(1)

(问题)

(A) (B) (C)

(四)

无论如何,谢谢你的帮助:)

于 2015-04-17T12:57:14.560 回答