私はwinフォームアプリケーションでいくつかのWPFページを構築しています。私は自分のアプリケーションにWPFテーマを使用したい。 (プロジェクトがWPFフォームを表示するWPF ElementHost
とWinフォームプロジェクトであるため)App.xaml
を持っていない私は、このように私のフォームでの私のテーマリソースディクショナリを追加しました:WPFで他のリソースclobbersテーマを定義する
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/ExpressionDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
これは、このフォーム上のすべてのコントロールのために働きますその他のWPFユーザーコントロールのいくつかがありますが、テーマが機能していないユーザーコントロールがあります。リソースが配置またはリソースに何される場所は関係していないよう
<Grid.Resources>
<Style TargetType="ComboBox">
<Setter Property="Margin" Value="0 2 5 2" />
</Style>
</Grid.Resources>
:私はこのように自分のリソースを定義し、影響を受けるコントロールすることを突き止めています。リソースにキーが設定されていないものは、スタイルのターゲットとなるすべてのテーマをブロックします。
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template" Value="{DynamicResource ComboBoxTemplate}" />
</Style>
そして、このように見えるように自分のスタイルを変更する:私も辞書でリソースを見つけることによって、アウトスマート、それはしようとした
<Grid.Resources>
<Style TargetType="ComboBox">
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template" Value="{DynamicResource ComboBoxTemplate}" />
<Setter Property="Margin" Value="0 2 5 2" />
</Style>
</Grid.Resources>
しかし、それは私のコンボボックスが完全に消失させました!
ターゲットコントロールを覆い、テーマをスローしないリソースを追加する方法はありますか?
@Dave Clemmer:あなたがユーザーコントロールにリソースを移動する場合
しかし、あなたがして、適切に暗黙的なスタイルを行うことができますあまり具体的でないスタイルのもの?それは本当に悪い考えですね! –
wpf-stylesでは事実上何も出てこないので、より多くの人がこの投稿を見つけることができるように、私はスタイルとして再タグ付けしました。私はwpf-タグが落胆していると言われてきました。いずれにしても、タグの説明にはこれを反映する必要があります。興味深いもの: –
その問題は、人々があなたに従うタグを選択するときにwpfとスタイルを言うことができないので、ウェブ、アンドロイド、デルファイなどが得られるかもしれないが、私はルールを作ることはできないと思う。 –