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