wpf中的checkbox怎么互斥?

wpf中的checkbox怎么互斥?,第1张

checkbox没办法只通过设置来实现你要的功能,不过你可以通过代码实现:

xaml:

<StackPanel>

<CheckBox Name="chk" Click="chk_Click"/>

<CheckBox Name="chk2" Click="chk_Click"/>

<CheckBox Name="chk3" Click="chk_Click"/>

</StackPanel>

后台代码:

private void chk_Click(object sender, RoutedEventArgs e)

{

var checkBoxes = new[] { chk, chk2, chk3}

var current = (CheckBox)sender

foreach (var checkBox in checkBoxes)

{

if (checkBox != current)

{

checkBox.IsChecked = !current.IsChecked

}

}

}

当然, 你还可以看RadioButton能不能达到你的要求,因为RadioButton可以通过设置GroupName来实现分组的目的。

你需要修改一下DataGridTemplateColumn.CellTemplate 就可以了。

<DataGrid AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalContentAlignment="Center" >

<DataGrid.Columns>

<!--<DataGridCheckBoxColumn x:Name="dgIscheck" Binding="{Binding IsCheck}" Header="状态" HeaderStringFormat="true" />-->

<DataGridTemplateColumn Header="状态" >

<DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<CheckBox Name="cbStatus" IsChecked="{Binding IsCheck}" Tag="{Binding ID}" Click="cbStatus_Click" />

</DataTemplate>

</DataGridTemplateColumn.CellTemplate>

</DataGridTemplateColumn>

<DataGridTextColumn Header="ID" Width="170" Binding="{Binding ID}" />

<DataGridTextColumn Header="姓名" Width="80" Binding="{Binding UserName}" />

<DataGridTextColumn Header="Email" Width="170" Binding="{Binding MailAddress}" />

</DataGrid.Columns>

</DataGrid>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11947655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存