HeadText
withと呼ばれる特定の WPF スタイルに問題がありTargetType = "TextBlock"
ます。スタイルはForeground
、FontSize
および を定義しEffect
ます。TextBlock が初めて表示されるときは、Foreground セッターのみが起動されず (テキストの色は黒のまま)、FontSize と Effect が通常どおり適用されます。親から TextBlock を削除して戻すと、前景も変更されます。
状況:
Presenter.dll アセンブリ
- class
Presenter: Window
、私のユーザーコントロールをロードして表示します。 Generic.xaml
- スタイルを含むリソース ディクショナリ。Presenter.dll
を直接参照しませんTestPresentable.dll
。
TestPresentable.dll アセンブリ
TestPresentable: UserControl
には、スタイル付きの がありますTextBlock
。TestPresentable.dll
を直接参照しませんPresenter.dll
。
MainApp.exe
- 以前の両方のアセンブリを参照し、
- アセンブリ
MainWindow
からインスタンス化します。Presenter.dll
- アセンブリ
TestPresentable
からインスタンス化します。TestPresentable
- セット
MainWindow.ContentHost.Content = testPresentable
関連コード:
プレゼンター.dll
// Themes/Generic.xaml
...
<Style TargetType="{x:Type TextBlock}" x:Key="HeadText">
<Setter Property="Foreground" Value="#FFFFFFFF" />
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0" Color="#79000000" BlurRadius="3" Opacity="1" />
</Setter.Value>
</Setter>
<Setter Property="FontSize" Value="24"/>
</Style>
...
// MainWindow.xaml
...
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Presenter.dll;component/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ContentPresenter Name="ContentHost"/>
</Grid>
...
TestPresentable.dll
// TestPresentable.xaml
...
<TextBlock Text="{Binding SomeData}" Style="{DynamicResource HeadText}"/>
...