我想创建一组切换按钮,一次检查零个或一个切换按钮。选中零个或一个切换按钮的ToggleButton组
如果我使用带按钮式按钮的单选按钮,那么至少有一个按钮将在特定的时间被checke,并且我想允许没有选择按钮的选项被选中。
我创建了以下样式到togglebutton和下面的togglebuttons,但由于某种原因 togglebutton在调用时不会改变缺省属性。
<Window x:Class="ClearMvvmDeltaItem.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Model="clr-namespace:ClearMvvmDeltaItem.Model" Title="MainWindow"
Height="300"
Width="300"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Window.Resources>
<Model:NotConverter x:Key="NotConverter" />
<Style TargetType="{x:Type CheckBox}">
<Style.Triggers>
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource NotConverter}" UpdateSourceTrigger="PropertyChanged">
<Binding RelativeSource="{RelativeSource Mode=Self}" Path="Name"></Binding>
<Binding Path="CurrentCheckedItem"></Binding>
</MultiBinding>
</DataTrigger.Binding>
<DataTrigger.Setters>
<Setter Property="Background" Value="Red"></Setter>
<Setter Property="IsChecked" Value="False"></Setter>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<CheckBox x:Name="first" Content="First"
Command="{Binding FirstCheckedChanged}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Name}"
IsChecked="{Binding IsFirstChecked }"
>
</CheckBox>
<CheckBox x:Name="second" Command="{Binding SecondCheckedChanged}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Name}"
IsChecked="{Binding IsSecondChecked}"
Content="Second"
Grid.Row="1"></CheckBox>
<CheckBox x:Name="third" Content="Third" Grid.Row="2"
Command="{Binding ThirdCheckedChanged}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Name}"
IsChecked="{Binding IsThirdChecked}"
></CheckBox>
</Grid>
视图模型的命令代码:
FirstCheckedChanged = new RelayCommand<string>(newName =>
{
if (_isFirstChecked)
CurrentCheckedItem = newName;
});
SecondCheckedChanged = new RelayCommand<string>(newName =>
{
if (_isSecondChecked)
CurrentCheckedItem = newName;
});
ThirdCheckedChanged = new RelayCommand<string>(newName =>
{
if (_isThirdChecked)
CurrentCheckedItem = newName;
});
的datatrigger被调用,因为我可以看到相关的ToggleButtons的背景颜色变为红色,但物业器isChecked不以影响所有。
谢谢...