をインライン化。WPFセッターの値は、私はこのコードを持って
私は私のコードをインライン化しようとしたので、私はこれを書いた:
<Setter Property="WindowChrome.WindowChrome"
Value="{x:Static SystemParameters.CaptionHeight}"/>
をしかし、私は、アプリケーションを実行する場合、今、それは起動しません。どうして?
をインライン化。WPFセッターの値は、私はこのコードを持って
私は私のコードをインライン化しようとしたので、私はこれを書いた:
<Setter Property="WindowChrome.WindowChrome"
Value="{x:Static SystemParameters.CaptionHeight}"/>
をしかし、私は、アプリケーションを実行する場合、今、それは起動しません。どうして?
プロパティのタイプはWindowChrome
なので、タイプWindowChrome
の値が必要です。
最初のケースでは、うまくいきます。また、プロパティCaptionHeight
の正しい型の値をインスタンスに渡します。
2番目のケースでは、WindowChrome
プロパティに完全に異なるタイプ(タイプはCaptionHeight
)を割り当てようとしています。
アプリケーション内WindowChrome
のただ1つのインスタンスがある場合さて、あなたはStaticResource
としてそれを宣言することができます。
<App.Resources>
<WindowChrome x:Key="WindowChromeResource"
CaptionHeight="{x:Static SystemParameters.CaptionHeight}"/>
</WindowChrome>
</App.Resources>
そして、あなたが必要とするたびにそれを呼び出す:
<Setter Property="WindowChrome.WindowChrome"
Value="{StaticResource WindowChromeResource}"/>
代わりに、動的な番号の異なるインスタンスが必要な場合は、これは絶対にできません。
多くの開発者は、あなたの前に何度もWPFの詳細について主張してきましたが、WPFチームはこれを改善しませんでした。広範な議論については、thisおよびthisを参照してください。
1番目のオプションのように残しておけばそれは機能しますか? – Tuco
はい、完全に正常に動作します。 –
'SystemParameters.CaptionHeight'は' WindowChrome'型のオブジェクトではないので、WPFはそれを暗黙的に変換することができません。 –