如何让一组切换按钮像 WinUI3 中的单选按钮一样工作?
对于下面的示例,如何实现以下 UI 行为:
您可以通过单击四个切换按钮之一来选中它,同时取消选中其他 3 个按钮。
您无法通过单击来取消选中已选中的切换按钮。
<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
<ToggleButton x:Name="Toggle1" Content="ToggleButton"
IsEnabled="{x:Bind DisableToggle1.IsChecked.Value.Equals(x:False), Mode=OneWay}"
Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked" />
</StackPanel>
我不会设置
IsEnabled
,而是像这样设置 IsHitTestVisible
:
<StackPanel x:Name="ToggeButtons">
<ToggleButton
Checked="ToggleButton_Checked"
Content="1" />
<ToggleButton
Checked="ToggleButton_Checked"
Content="2" />
<ToggleButton
Checked="ToggleButton_Checked"
Content="3" />
<ToggleButton
Checked="ToggleButton_Checked"
Content="4" />
</StackPanel>
private void ToggleButton_Checked(object sender, RoutedEventArgs e)
{
if (sender is not ToggleButton checkedToggleButton)
{
return;
}
foreach (ToggleButton toggleButton in ToggeButtons.Children.OfType<ToggleButton>())
{
toggleButton.IsChecked = toggleButton == checkedToggleButton;
toggleButton.IsHitTestVisible = toggleButton != checkedToggleButton;
}
}