7
我有一个用户控件,将样式应用于按钮,样式包含ControlTemplate部分。在ControlTemplate中,有各种UI元素,例如Ellipse和Path。WPF从代码后面设置命名样式元素?
如果我给这些元素 - 椭圆和路径 - 带有x:Name的名称,我可以从后面的代码访问它们吗?
它似乎风格的椭圆和路径不可见,因为我得到一个编译错误(C#)。
我该怎么做呢?
我有一个用户控件,将样式应用于按钮,样式包含ControlTemplate部分。在ControlTemplate中,有各种UI元素,例如Ellipse和Path。WPF从代码后面设置命名样式元素?
如果我给这些元素 - 椭圆和路径 - 带有x:Name的名称,我可以从后面的代码访问它们吗?
它似乎风格的椭圆和路径不可见,因为我得到一个编译错误(C#)。
我该怎么做呢?
由于模板可以实例化多次,因此无法通过x:Name
绑定生成的成员。相反,您必须在应用于控件的模板中找到指定的元素。
鉴于简化XAML:
<ControlTemplate x:Key="MyTemplate">
<Ellipse x:Name="MyEllipse" />
</ControlTemplate>
你会做这样的事情:
var template = (ControlTemplate)FindResource("MyTemplate");
template.FindName("MyEllipse", myControl);
甚至更简单:
var ellipse = (Ellipse)myControl.Template.FindName("MyEllipse", myControl);
你可以阅读有关FrameworkTemplate.FindName
。
完美,非常感谢! – MattJ 2009-10-05 19:44:18
如果它是完美的,那么将其标记为答案。 – Vaccano 2009-12-28 20:37:35