Wpf 已检查上的ToggleButton触发器

Wpf 已检查上的ToggleButton触发器,wpf,triggers,togglebutton,Wpf,Triggers,Togglebutton,我试图修改ToggleButton命令,当它显示它的IsChecked属性时。我的XAML如下所示: <ToggleButton Content="Profile" Command="{Binding Path=ShowProfileMappingCommand}" CommandParameter="{Binding Path=ProfileMappingParameter}"> <ToggleButton.Style>

我试图修改ToggleButton命令,当它显示它的IsChecked属性时。我的XAML如下所示:

<ToggleButton  Content="Profile" Command="{Binding Path=ShowProfileMappingCommand}" CommandParameter="{Binding Path=ProfileMappingParameter}">
                <ToggleButton.Style>
                    <Style TargetType="ToggleButton">
                        <Style.Triggers>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter  Property="Command"  Value="{Binding Path=ShowProfileMappingCommand}" />
                            </Trigger>
                            <Trigger Property="IsChecked" Value="False">
                                <Setter  Property="Command"  Value="{Binding Path=HideProfileMappingCommand}" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ToggleButton.Style>
            </ToggleButton>

不幸的是,这似乎不起作用。我的命令永远不会被调用。你知道为什么会这样吗?

我同意HighCore的观点,这似乎太复杂了。但是,如果必须这样做,我想这是可能的,那么,只是一个猜测,尝试一个相对源绑定,如:

Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.ShowProfileMappingCommand}"

Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.HideProfileMappingCommand}"
Idk如果此xaml位于usercontrol或page中,则必须将ancestorType更改为此处使用的控件类型。这可能有帮助,也可能没有帮助


使用datatriggers设置inline:Command={Binding Path=ShowProfileMappingCommand}可能会同时导致问题。

为什么不将Bool IsChecked属性作为命令参数传递呢?看起来您使用了两个不同的命令,使其过于复杂了,IMO;可以在ViewModel中创建名为IsChecked的属性。然后在XAML中,将ToggleButton的IsChecked属性绑定到ViewModel中的IsChecked属性。在属性的setter部分,检查value==true。这样,所有逻辑都落在setter中,即控件在ViewModel中绑定到的属性中。@HighCore Good point。我会考虑一下。是的,你们是对的,在触发器和内联中设置命令属性导致它们不起作用。是的,关于命令参数你们都是对的。我不知道尝试使用两个单独的命令时在想什么。