1

UIElementUIの特定の「スロット」でsを動的に交換するための最小の方法は何ですか?いくつUIElementかのがあり、外部データバインディング(コンボボックスの選択など)に基づいて、そのうちの1つを表示し、現在表示されているものを非表示にします。したがって、動作は似ていますTabControlが、タブストリップ、クローム、タブアイテムのインスタンスはありません。したがって、実際にを使用してTabControl、コントロールテンプレートをオーバーライドすることができます。しかし、これは本当に最も最小限のアプローチですか?

4

6 に答える 6

2
<ContentControl Content="{Binding SomePropertyThatYieldsTheContent}"/>
于 2009-03-18T12:17:41.213 に答える
1

これが最も簡潔な方法かどうかはわかりませんが、 を使用している場合はsDataTemplateを使用できますDataTrigger(ここでの前提は、初期可視性が であるということですCollapsed)。

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=SourceProperty.ValueType}">
        <DataTrigger.Value>
            <pm:ValueType>Text</pm:ValueType>
        </DataTrigger.Value>
        <Setter TargetName="TextEditor" Property="Visibility" Value="Visible" />
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=SourceProperty.ValueType}">
        <DataTrigger.Value>
            <pm:ValueType>Logical</pm:ValueType>
        </DataTrigger.Value>
        <Setter TargetName="LogicalEditor" Property="Visibility" Value="Visible" />
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=SourceProperty.ValueType}">
        <DataTrigger.Value>
            <pm:ValueType>DateTime</pm:ValueType>
        </DataTrigger.Value>
        <Setter TargetName="DateEditor" Property="Visibility" Value="Visible" />
    </DataTrigger>
...
于 2009-03-18T12:23:41.353 に答える
0

可能な「ビュー」ごとにカスタム ユーザー コントロールを作成します。

それらの可視性は、c# を使用して変更されます。コーディングはほとんど必要ありません。

このアプローチの主な理由は、開発の容易さです。デザイナーは、そこにある可能性のあるすべてのコントロールのセットではなく、特定のビューに焦点を合わせます。

于 2009-07-22T08:45:10.587 に答える
-1

私のやり方は、要素を互いに重ねて、プログラムでVisibilityプロパティをVisibleからCollapsedに変更し、必要に応じて元に戻すことです。

于 2009-03-18T12:18:03.707 に答える