0

Visual State の変更によってパネルが閉じられた後、パネルが再度開かれる前に、パネルのコンテンツ テンプレートを変更するメニュー システムを作成しようとしています (スライド イン/アウト フィルターを考えてください)。データトリガーの組み合わせを使用してこれを達成したいと思っていましたが、喜びがありません:(一部のコードは簡潔にするために省略されていますが、私のトリガー設定は次のようになります:

<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 幅のバインディングを省略すると、トリガーはテンプレートを正しく変更しますが、その理由を特定できません (幅は視覚状態の変化によってアニメーション化されます)。

何か案は?

ありがとう

4

1 に答える 1

0

Path=Width を Path=ActualWidth に変更してみてください。

Width プロパティが実際には 0 であることを報告していないため、トリガーが起動していないと思います。

Snoop を使用して、これを確認できますhttp://snoopwpf.codeplex.com/

于 2010-10-21T17:15:01.893 に答える