WPF には、単一のバインドされたデータに対して何もしない、何も表示しないストレージ リポジトリとして機能する「コントロール」がありますか? 基本的に、"Tag" DependencyProperty のみを公開する非表示のコントロールです。
「頻繁に使用する」データ バインディングの一部を 1 つの場所に統合する方法として、このようなコントロールを使用したいと考えています。後で ViewModel プロパティの名前を変更した場合、バインディングを 1 か所で更新するだけで済みます。私の「タグ」コントロール。
元:
<!-- Does this type of control exist? -->
<StorageControl x:Name="someData" Tag="{Binding MyProperty}" />
<StorageControl x:Name="moreData" Tag="{Binding MyOtherProperty}" />
<!-- further down the XAML file... -->
<TextBlock Text="{Binding Tag, ElementName=someData}">
<Image.Style>
<!-- Style makes reference to "someData" and "moreData," -->
<!-- with data triggers effecting the appearance. -->
</Image.Style>
</TextBlock>
<Image>
<Image.Style>
<!-- Style makes reference to "someData" and "moreData," -->
<!-- with data triggers effecting the appearance. -->
</Image.Style>
</Image>
このようなコントロールを使用すると、別の方法では複雑で深くネストされた ViewModel 構造を単一のビュー内で「平坦化」することもできます。また、ユーザー インターフェイスのモックアップをスタブ化するときにプレースホルダーとして使用することもできますが、まだ ViewModel を生成していません。
もう 1 つの理想的な使用シナリオは、使い捨ての「IValueConverter」クラスを作成する代わりに使用することです。例として、結果の「不透明度」を取得するために、IValueConverter を介してデータ バインドされた値をフリッターしようとするのではなく、DataTriggers を使用して正しい値を提示するように StorageControl を「スタイル」することができます。
<StorageControl x:Name="opacityHost">
<StorageControl.Style>
<Style TargetType="StorageControl">
<Setter Property="Tag" Value="1.0" />
<Style.Triggers>
<DataTrigger Binding="{Binding MyProperty}">
<!-- This opacity trigger can now be used -->
<!-- by many other controls, without overriding their style -->
<Setter Property="Tag" Value="0.5" />
</DataTrigger>
</Style.Triggers>
</Style>
</StorageControl.Style>
</StorageControl>
自分で作成できることはわかっていますが、これはすでに存在している可能性がある十分に汎用的なコントロールのようです。
このシナリオでFrameworkElementを使用しますか?