WPFのバインディングを簡素化したいと思います。さて、アプリケーション設定の文字列値にバインドするApp.xaml内のリソースFontFamily
を作成して、すべてのウィンドウで長い行のバインディング表現を避けます。しかし、私はそれを行う方法を見つけることができなかったことがわかった。WPFの既存の値に静的リソースをバインドする
XAML 2009にはx:Arguments
がありますが、ここでは該当しません。
私のアプローチ:
<DynamicResource x:Key="PrimaryFont" ResourceKey="{Binding PrimaryFont, Source={x:Static properties:Settings.Default}, Converter={StaticResource StringToFontFamilyConverter}}"/>
はXamlParseException
を投げ、失敗しました。
<FontFamily x:Key="PrimaryFont">
<Binding Path="PrimaryFont" Source="{x:Static properties:Settings.Default}" Converter="{StaticResource StringToFontFamilyConverter}"/>
</FontFamily>
これもコンパイルされません。
私はすべてを混乱のように見せたくないので、後ろにコードを追加したくありません。それは可能ですか?
編集:これはSetting global font familyの複製ではありません。 FontFamily
は目的を説明するためだけのものであり、現実世界ではバインディングを簡素化したい要素が複数存在し、要素は新しいスタイルの良いターゲットではないかもしれません。
これはどのように重複しているのですか? – KyloRen
変換が必要ないので、Binding部分は比較的小さいです: '' FontFamily = "{Binding MyFont、Source = {x:Static p:Settings.Default}}" '' '' Settings.Default''に '' MyFont''という名前の文字列 ''があります。また、私は ''プロパティ ''の代わりに '' p''を使ってそれを小さくしました。 – Ron
@Ronありがとう。今のところ私は適用可能な設定でそれを使用します。 –