如何在依赖项属性

时间:2017-11-30 13:21:18

标签: c# wpf dependency-properties

我有一个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)));

但那不起作用:(

提前感谢您帮助我。

0 个答案:

没有答案