HeadText
という特定のWPFスタイルに問題があり、TargetType = "TextBlock"
です。スタイルではForeground
,FontSize
、Effect
と定義されています。 TextBlockが最初に表示されるときは、フォアグラウンドセッターは起動されず(テキストの色は黒のままです)、FontSizeとEffectは正常に適用されます。親からTextBlockを削除して戻すと、前景も変更されます。.NET4 WPF - コントロールの非表示/表示後にのみ動作するフォアグラウンド用のスタイル設定ツール
状況:
Presenter.dllアセンブリ
- クラス
Presenter: Window
、負荷と私のユーザーコントロールを表示します。 Generic.xaml
- スタイルを含むリソース辞書。Presenter.dll
は直接参照しませんTestPresentable.dll
。
TestPresentable.dllアセンブリ
TestPresentable: UserControl
は、スタイルTextBlock
を有しています。TestPresentable.dll
は直接参照しませんPresenter.dll
。
MainApp.exe
- 参照双方前アセンブリ、
- は
TestPresentable
アセンブリからTestPresentable
、 - セット
MainWindow.ContentHost.Content = testPresentable
MainWindow
Presenter.dll
からアセンブリをインスタンス化関連するコード:
Presenter.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}"/>
...