2016-08-26 91 views
0

我已经使用了XAML ListView,并且Listview中的一列是checkbox。当数据绑定到ListView时,它将创建多行,并将列的on作为复选框。我面临的问题是我希望用户只能选择一个复选框,而现在他可以选择多个复选框。所有其他复选框在用户选择时都应该取消选中。如果选中其他复选框,则取消选中

这是XAML部分。

<ListView ScrollViewer.VerticalScrollBarVisibility="Auto" Name="ClientList" Width="Auto" Height="Auto" BorderThickness="0.5" BorderBrush="#cccccc" IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Stretch" Margin="20,10,60,0" > 

        <ListView.ItemContainerStyle> 

         <Style TargetType="ListViewItem"> 
          <Setter Property="Focusable" Value="false"/> 
          <Setter Property="Foreground" Value="Black"/> 
          <Setter Property="Height" Value="30"/> 
         </Style> 
        </ListView.ItemContainerStyle> 

        <ListView.View> 
         <GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle1}"> 
          <GridViewColumn Header="Client Name " x:Name="clienteName" DisplayMemberBinding="{Binding ClientName}" Width="390" /> 
          <GridViewColumn Header="Client Code " x:Name="ClienteCode" DisplayMemberBinding="{Binding ClientCode}" Width="195" /> 
          <GridViewColumn Header="Select" Width="57"> 
           <GridViewColumn.CellTemplate> 
            <DataTemplate > 
             <Grid > 
              <CheckBox DataContext="{Binding ClientCode}" Click="CheckBox_Click" TouchDown="CheckBox_TouchDown"/> 
             </Grid> 
            </DataTemplate> 
           </GridViewColumn.CellTemplate> 
          </GridViewColumn> 

         </GridView> 
        </ListView.View> 
</ListView> 

CS用于数据绑定到ListView

List<Client> list = new List<Client>(); 
ClientList.Items.Clear(); 
list = getListFromDT(dt); 

foreach (Client pr in list) 
{ 
    ClientList.Items.Add(pr); 
} 
+3

听起来像是你真正想要的是一个单选按钮... – doubleYou

+0

@doubleYou我希望有一个复选框,像一个单选按钮或者我可以用一个单选按钮,它看起来像一个复选框。 –

回答

0
  1. 请使用单选按钮 - 它需要的行为。如果你想让它看起来像一个复选框,然后更改RadioButtons样式看起来像复选框。
  2. 如果你仍然想使用CheckBox,那么你可以选择foreach(GridView中的var item)。
0

你是否尝试过类似的东西?

void check_CheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox sendercheck = sender as CheckBox; 
     if (sendercheck.Checked) 
     { 
      foreach (var c in Container.Children) 
      { 
       CheckBox check = c as CheckBox; 
       if (check != null) 
       { 
        if (check.Id != sendercheck.Id) 
        { 
         check.Checked = false; 
        } 
       } 
      } 
     } 
    } 

这里的容器应该是你的列表

相关问题