簡體   English   中英

如果已選中所有其他復選框,請取消選中

[英]Uncheck all other checkboxes if one is checked

我使用了XAML ListView,並且Listview中的一列是一個復選框。當數據綁定到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);
}  
  1. 請使用RadioButton-它具有所需的行為。 如果希望它看起來像一個復選框,則將RadioButtons樣式更改為看起來像一個復選框。
  2. 如果您仍然想使用CheckBox,那么可以選擇foreach(GridView中的var項)。

你嘗試過這樣的事情嗎?

  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;
                    }
                }
            }
        }
    }

這里的容器應該是您的清單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM