【发布时间】:2012-04-03 22:36:57
【问题描述】:
我在用户控件中声明了一个样式。然后我将该 UserControl 放在一个窗口中。如何从 Window 的 XAML 访问 UserControl 的样式???
【问题讨论】:
-
看来你的设计是错误的。如果与不同控件共享的样式将其放在树中的元素上方。例如在应用程序级别或窗口上。
-
有点奇怪,我很难解释为什么会这样。
我在用户控件中声明了一个样式。然后我将该 UserControl 放在一个窗口中。如何从 Window 的 XAML 访问 UserControl 的样式???
【问题讨论】:
通过可视化树向上解析资源。这不是处理样式的常用方法。
你可以通过后面的代码来实现:
Style style = (Style)yourUserControl.Resources[YourKeyStyle];
【讨论】:
如果你给你的 UserControl 一个名字,你可以简单地使用ElementName 绑定来访问UserControl 的Style 属性。
<Window Title="MainWindow" Height="350" Width="525"
Style="{Binding ElementName=myUserControl, Path=Style}">
<UserControl Name="myUserControl" >
<UserControl.Style>
<Style TargetType="Control">
<Setter Property="Background" Value="Yellow" />
</Style>
</UserControl.Style>
</UserControl>
</Window>
如果您只想从 UserControl 的样式中访问单个 setter 值,您可以使用以下内容:
<Window Background="{Binding ElementName=myUserControl, Source=Style, Path=Background}">
希望这会有所帮助!
【讨论】: