不能将触发器设置为切换按钮

时间:2019-05-29 17:31:49

标签: c# xaml mvvm triggers

我无法将触发器附加到切换按钮

  1. 在第一个版本中,我收到一个错误,指出样式已经重新定义

  2. 在带有触发器的第二个版本中,我得到一个错误,该属性 Command-无法识别成员“ Command”或无法访问该成员。

这是按钮

<ToggleButton
               Name="ToggleButton_Record"
               IsChecked="False"
               Style="{StaticResource MaterialDesignActionToggleButton}"
               ToolTip="Записать">

               <materialDesign:PackIcon
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Foreground="OrangeRed"
                    Kind="Record" />

</ToggleButton>

这是第一变种

 <ToggleButton.Style>
                   <Style TargetType="{x:Type ToggleButton}">
                       <Style.Triggers>
                            <Trigger Property="ToggleButton.IsChecked" Value="True">
                                 <Setter Property="Command" Value="{Binding StartRecordCommand}" />
                            </Trigger>
                            <Trigger Property="ToggleButton.IsChecked" Value="False">
                                  <Setter Property="Command" Value="{Binding StopRecordCommand}" />
                            </Trigger>
                        </Style.Triggers>
                   </Style>
 </ToggleButton.Style>

带有触发器的第二个变体

 <ToggleButton.Triggers>
           <Trigger Property="ToggleButton.IsChecked" Value="True">
                <Setter Property="Command" Value="{Binding StartRecordCommand}" />
           </Trigger>
           <Trigger Property="ToggleButton.IsChecked" Value="False">
                <Setter Property="Command" Value="{Binding StopRecordCommand}" />
           </Trigger>
</ToggleButton.Triggers>

是的,我知道在第一个变体中,我只是删除了button中的样式及其开始的作品,但是我需要这种样式。

1 个答案:

答案 0 :(得分:0)

使用第一版本。 删除样式=“ {..}” 。然后在您定义的样式中添加BasedOn

<ToggleButton
               Name="ToggleButton_Record"
               IsChecked="False"
               ToolTip="Записать">

              <ToggleButton.Style>
                   <Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource MaterialDesignActionToggleButton}">
                       <Style.Triggers>
                            <Trigger Property="ToggleButton.IsChecked" Value="True">
                                 <Setter Property="Command" Value="{Binding StartRecordCommand}" />
                            </Trigger>
                            <Trigger Property="ToggleButton.IsChecked" Value="False">
                                  <Setter Property="Command" Value="{Binding StopRecordCommand}" />
                            </Trigger>
                        </Style.Triggers>
                   </Style>
              </ToggleButton.Style>


               <materialDesign:PackIcon
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Foreground="OrangeRed"
                    Kind="Record" />

</ToggleButton>