在GridView中按行而不是按列互斥RadioButtons

时间:2014-01-15 11:07:27

标签: c# wpf xaml gridview

GridView 5列: - 文字 - 单选按钮 - 单选按钮 - 单选按钮 - 复选框

文本列通过绑定到List<>自动填充。 关于我需要的无线电按钮它们是按行而不是按列相互排斥;它们的值由用户交互设置。

如果我像下面的例子中那样设置GroupName属性,则所有单选按钮都按行和按列互斥。

你能告诉我吗?提前谢谢!

克里斯

<ListView Grid.Row="0" Grid.Column="0"  HorizontalAlignment="Stretch" Margin="0,0,0,0" Name="lstWords" VerticalAlignment="Stretch">
<ListView.View>
    <GridView>
        <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Word" DisplayMemberBinding="{Binding Word}"/>
        <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Frequency" Width="60" DisplayMemberBinding="{Binding Frequency}" />
        <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Ins"  Width="30">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <RadioButton Name="radioToInsert" GroupName="radioWords" />
                </DataTemplate>     
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
        <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Rep" Width="30">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <RadioButton Name="radioToReplace" GroupName="radioWords" />
            </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
        <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Del" Width="30">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <RadioButton Name="radioToDelete" GroupName="radioWords" />
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
        <GridViewColumn HeaderContainerStyle="{StaticResource MyHeaderStyle}" Header="Inf" Width="30">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox Name="chkToInflect"/>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
    </GridView>
</ListView.View>

1 个答案:

答案 0 :(得分:0)

如果您可以修改ListView绑定到的列表中的对象,则可以在该对象中添加唯一标识该特定对象的属性,仅用于此目的。例如:

public class DataObject
{
    public void DataObject()
    {
        Id = Guid.NewGuid();
    }

    public Guid Id{ get; private set; }
}

然后,您可以将GroupName绑定到此媒体资源:

<RadioButton Name="radioToInsert" GroupName="{Binding Id, Mode=OneWay}" />

因为每行代表列表中的不同对象,所以此Id仅在1行范围内共享。