如何让一组切换按钮像WinUI3中的单选按钮一样工作?

问题描述 投票:0回答:1

如何让一组切换按钮像 WinUI3 中的单选按钮一样工作?

对于下面的示例,如何实现以下 UI 行为:

  1. 您可以通过单击四个切换按钮之一来选中它,同时取消选中其他 3 个按钮。

  2. 您无法通过单击来取消选中已选中的切换按钮。

<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>
c# radio-button winui-3 togglebutton
1个回答
0
投票

我不会设置

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.