我以前曾使用DefaultStyleKey设置来设置我的DataGrid的风格,但现在我要扩展一个风格与他人的支持算法FMP属性支持算法FMP财产。所以现在我有两个相同类型的样式,而且我必须比简单地设置DefaultStyleKey更具体。自定义控件的Silverlight样式。使用
不幸的是,我似乎无法访问generic.xaml文件,以获得在该样式的我创建。
必须有,当你不希望使用DefaultStyleKey,并需要从代码
我以前曾使用DefaultStyleKey设置来设置我的DataGrid的风格,但现在我要扩展一个风格与他人的支持算法FMP属性支持算法FMP财产。所以现在我有两个相同类型的样式,而且我必须比简单地设置DefaultStyleKey更具体。自定义控件的Silverlight样式。使用
不幸的是,我似乎无法访问generic.xaml文件,以获得在该样式的我创建。
必须有,当你不希望使用DefaultStyleKey,并需要从代码
您正在寻找这样的事情访问您的样式解决方法:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/CustomControl;component/Themes/generic.xaml", UriKind.RelativeOrAbsolute);
Style style = rd["StyleKey"] as Style;
}
“CustomControl '是您项目的名称,StyleKey是您想要访问的样式的关键字。
那么,为什么不能您扩展数据网格,以及创建一个新的类,并使用默认样式键作为新类型和在generic.xaml您可以创建基于你以前的风格一种新的风格。
但siverlight,我们创建一个基本样式为命名的风格,我们从它继承样式。
<style x:Key="BaseDataGrid"
<style TargetType="MyGrid1"
BasedOn="BaseDataGrid"
<style TargetType="MyGrid2"
BasedOn="BaseDataGrid"
是的,这是一个解决方案,但我想避免完全重新创建数据网格的样式,当我需要的只是调整现有的一个参数。 – blomster 2011-06-08 08:04:35