我对名为HeadText
. TargetType = "TextBlock"
样式定义Foreground
和。第一次显示 TextBlock 时,仅未触发 Foreground setter(文本颜色保持黑色),FontSize 和 Effect 正常应用。当我从父级中删除 TextBlock 并将其返回时,前景也会发生应有的变化。FontSize
Effect
情况:
Presenter.dll 程序集
- class
Presenter: Window
,加载并显示我的用户控件。 Generic.xaml
- 包含样式的资源字典。Presenter.dll
不直接引用TestPresentable.dll
。
TestPresentable.dll 程序集
TestPresentable: UserControl
, 有风格TextBlock
。TestPresentable.dll
不直接引用Presenter.dll
。
主应用程序
- 引用以前的两个程序集,
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}"/>
...