2016-08-26 88 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; 
        } 
       } 
      } 
     } 
    } 

這裏的容器應該是你的列表

相關問題