1

動的ContentControlに設定する必要があるものがあります。ContentTemplate

そこで、2を記述し、ビューモデルのブール依存関係プロパティが変更されたときにトリガーが起動して適切なテンプレート(dt1 / dt2)を設定するようDataTemplatesにスタイルを設定することにしました(true / false)。ContentControl

ただし、問題は、ブール型プロパティが主にに設定されているtrue場合、データテンプレートは常にになりdt1、プロパティをfalse変更してもテンプレートがに変更されないことdt2です。

データトリガーはブール依存関係プロパティにバインドされているため、プロパティを変更するとトリガーが起動されませんか?

ノート:

  • クリックイベントMyViewを変更するボタンがあります。BooleanDependencyProp
  • MyViewModelを実装するインターフェースから継承しますINotifyPropertyChanged

Xaml:

<UserControl x:Class="Views.MyView">
...

<StackPanel>
    <ContentControl Content="{Binding RelativeSource={RelativeSource AncestorType=MyView}, Path=MyViewModel}">
        <ContentControl.Style>
            <Style TargetType="{x:Type ContentControl}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding BooleanDependencyProp}" Value="true">
                                                <Setter Property="ContentTemplate">
                                                    <Setter.Value>
                                                        <dt1 ... />
                                                    </Setter.Value>
                                                </Setter>
                    <DataTrigger Binding="{Binding BooleanDependencyProp}" Value="false">
                                                <Setter Property="ContentTemplate">
                                                    <Setter.Value>
                                                        <dt2 ... />
                                                    </Setter.Value>
                                                </Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>
</StackPanel>
4

1 に答える 1

1

これはWPFフレームワークの既知の欠点です。異なるデータテンプレートを適用する場合は、ビジュアル状態マネージャーを使用してプレゼンテーションを変更するか、代わりにトリガーに基づいて変更されるユーザーコントロールのコンテンツデータテンプレートを交換することを検討してください。あなたはより多くのマイレージを得るでしょう。

私が言えることはもっとたくさんありますが、それはあなたのシナリオとこれらのDataTemplatesの違い、なぜ曖昧さを解消するのかなどを知ることを含みます。また、MVVMはいたるところにありますか?または、いくつかのビューモデルを使用したコード+マークアップスタイルですか?

于 2012-10-08T20:09:55.157 に答える