我以前一直使用DefaultStyleKey设置来设置我的datagrid的样式,但现在我想用另一个样式扩展一个样式和另一个样式。所以现在我有两个具有相同Type的样式,并且我必须比仅设置DefaultStyleKey更具体。
不幸的是,我似乎无法访问generic.xaml文件来获取我创建的样式。
当您不想使用DefaultStyleKey并且需要从代码访问样式时,必须有一种解决方法
答案 0 :(得分:0)
你在寻找这样的东西:
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是您要访问的样式的Key。
答案 1 :(得分:0)
那么为什么不能扩展你的数据网格,创建一个新类并使用默认样式键作为新类型,在你的generic.xaml中,你可以根据以前的样式创建一个新的样式。
但是在siverlight中,我们创建了一个基本样式作为命名样式,我们从它继承样式。
<style x:Key="BaseDataGrid"
<style TargetType="MyGrid1"
BasedOn="BaseDataGrid"
<style TargetType="MyGrid2"
BasedOn="BaseDataGrid"