[英]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);
}
你嘗試過這樣的事情嗎?
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.