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