请教大家一个关于silverlight中动态改变style中的值的问题
样式代码如下
- XML code
<Style x:Key="Style2" TargetType="Primitives:DataGridColumnHeader"> <Setter Property="Foreground" Value="Red"/> <Setter Property="FontSize" Value="15"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Primitives:DataGridColumnHeader"> <Border Name="aaa" Background="Gold" Width="50"> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>
我想在后台c#代码中改变ControlTemplate 中名为'aaa'的border的width的值,应该怎么弄?
我自己写了一段;
- C# code
public static DependencyProperty BorderProperty = DependencyProperty.Register("Border", typeof(Border), typeof(MainPage), null); Style style = this.Resources["Style2"] as Style; SetterBaseCollection setterBaseCollection = style.Setters; Setter setter = setterBaseCollection[2] as Setter; ControlTemplate controlTemplate = setter.Value as ControlTemplate; object c = controlTemplate.GetValue(BorderProperty );但是在获取controlTemplate.GetValue(BorderProperty )时老是取到null,BorderProperty 应该怎么写,这种方法可以改变aaa的width的值吗,或者还有另外的方法?
谢谢
[解决办法]
你那个style是针对Primitives:DataGridColumnHeader类型的,而你的BorderProperty是针对MainPage的,两个根本没什么关系啊?怎么会取得到?
[解决办法]
如果你的控件是从Control派生的
有个方法可以获得模板里的控件
GetTemplateChild("Name");