MultiDataTriggers和VisualState

时间:2010-10-21 17:06:39

标签: wpf multitrigger

我正在尝试创建一个菜单系统,在面板被视觉状态更改关闭之后但在重新打开面板之前更改面板的内容模板(想一想幻灯片进/出过滤器)。我希望使用数据触发器的组合实现这一点,但我没有快乐:(为简洁起见,有些代码已被省略但我的触发器设置如下:

<ContentControl x:Name="contentControl" Content="{Binding SelectedThing}"
                                DataContext="{Binding}" Width="200">
                    <ContentControl.ContentTemplate>
                        <DataTemplate>
                          <ContentControl Name="cc"
                                          Content="{Binding}" />
                            <DataTemplate.Triggers>

                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Value="People"
                                                   Binding="{Binding Path=Name}">
                                        </Condition>

                                        <Condition Value="0"
                                                   Binding="{Binding ElementName=contentControl,Path=Width}">
                                        </Condition>
                                    </MultiDataTrigger.Conditions>
                                    <Setter TargetName="cc"
                                            Property="ContentTemplate"
                                            Value="{StaticResource PeopleTemplate}" />
                                </MultiDataTrigger>

...

当我在contentControl宽度上省略绑定时,触发器会正确更改模板,但我无法确定原因(通过视觉状态的更改来设置宽度)?

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试将Path = Width更改为Path = ActualWidth。

我认为触发器没有触发,因为Width属性实际上并没有报告它是0。

您可以使用Snoop确认此http://snoopwpf.codeplex.com/