2014-01-15 33 views
0

的GridView有5列: - 文本 - 单选按钮 - 单选按钮 - 单选 - 复选框互斥的单选按钮按行而不是列在GridView控件

文本列自动通过绑定到一个列表填充<>。 关于单选按钮我需要它们是按行而不是按列互斥的;它们的值由用户交互设置。

如果我像下面的例子那样设置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> 

回答

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行的范围内共享。

+0

它的工作原理!非常感谢! ...并且我不必修改我的对象,因为我在列表中的单词已经是唯一的,所以最后绑定字符串是GroupName =“{Binding Word,Mode = OneWay}”。 – user3197727