我有一个UserControl,里面有一个TabControl。 UserControl是一个单独的项目,作为库(DLL),所以我可以在其他项目中重用它。 首先,我在UserControl的Resources属性中为TabControl创建了一个自定义样式,以更好地适应UserControl的样式。
虽然我对结果很满意,但我希望能够从外部自定义样式。所以我为TabControl的Style设置了一个dependancy属性。
<TabControl x:Name="tabCtr"
SelectedIndex="{Binding selectedIndex, RelativeSource={RelativeSource AncestorType=UserControl}}"
Style="{Binding StyleTabControl, RelativeSource={RelativeSource AncestorType=UserControl}}"
ItemTemplateSelector="{StaticResource HeaderDataTemplateSelector}"
ContentTemplate="{Binding TabContentTemplate, RelativeSource={RelativeSource AncestorType=UserControl}}">
问题是,如果没有从外部绑定样式(使用UserControl的应用程序),如何默认使用UserControls资源中的自定义样式?
我尝试将Style保存在本地静态变量
上private static Style defaultFixiatedTabControlStyle;
在UserControls构造函数中初始化它
public DynamicTabControl()
{
InitializeComponent();
tabCtr.DataContext = this;
defaultFixiatedTabControlStyle = this.FindResource("FixatedTabControl") as Style;
}
并将dependancy属性的默认值设置为变量:
public static readonly DependencyProperty StyleTabControlProperty =
DependencyProperty.Register(
"StyleTabControl",
typeof(Style),
typeof(DynamicTabControl),
new FrameworkPropertyMetadata(
defaultFixiatedTabControlStyle ,
new PropertyChangedCallback(OnStyleChanged)));
但那不起作用:(
提前感谢您帮助我。