提问者:小点点

如何同步WPF中的几个切换按钮?[关闭]


我希望在我的表单的每个选项卡上都有一个切换按钮。随后在代码中使用此切换按钮,根据切换按钮中的值是真还是假来创建脚本。我希望当我选中第一个选项卡上的一个切换按钮时,其他选项卡上所有同名的切换按钮都显示相同的开/关位置。这可能吗?


共1个答案

匿名用户

您必须查看MVVM模式。

您需要一个ViewModel来存储切换按钮的(公共)状态。

public class ViewModel : INotifyPropertyChanged
{
    private bool? _isToggleButtonChecked;

    public bool? IsToggleButtonChecked
    {
        get => _isToggleButtonChecked;
        set
        {
            if (Equals(_isToggleButtonChecked, value))
                return;

            _isToggleButtonChecked = value;
            OnPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

然后,您需要将切换按钮isChecked属性绑定到视图模型isToggleButtonChecked:

<TabControl>
    <TabControl.DataContext>
        <local:ViewModel />
    </TabControl.DataContext>

    <TabItem Header="Tab 1">
        <ToggleButton Content="Click me"
                      IsChecked="{Binding IsToggleButtonChecked}"
                      HorizontalAlignment="Left"
                      VerticalAlignment="Top" />
    </TabItem>

    <TabItem Header="Tab 2">
        <ToggleButton Content="Click me"
                      IsChecked="{Binding IsToggleButtonChecked}"
                      HorizontalAlignment="Left"
                      VerticalAlignment="Top" />
    </TabItem>

    <TabItem Header="Tab 3">
        <ToggleButton Content="Click me"
                      IsChecked="{Binding IsToggleButtonChecked}"
                      HorizontalAlignment="Left"
                      VerticalAlignment="Top" />
    </TabItem>
</TabControl>