IsChecked上的ToggleButton触发器

时间:2013-12-18 14:23:54

标签: wpf triggers togglebutton

我正在尝试修改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>

不幸的是,这似乎不起作用。我的Commands永远不会被召唤。任何想法为什么会出现这种情况?

1 个答案:

答案 0 :(得分:0)

IMO我同意HighCore的看法,这似乎过于复杂。但是,如果必须像你拥有它一样(我猜可以这样做)那么,只需猜一猜,尝试相对源绑定如:

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

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

如果此xaml位于用户控件或页面中,则必须将ancestorType更改为您在此处使用的控件类型。这可能有所帮助,也可能没有帮助。

设置内联:Command =“{Binding Path = ShowProfileMappingCommand}”可能会在使用数据触发器的同时导致问题。