如何使内部控件的依赖项属性可用

时间:2013-03-28 07:59:04

标签: wpf wpf-controls

首先抱歉,如果这个问题的标题是如此“通用”......所以,我有以下问题:我有一个自定义的模板化控件,它只不过是一个自定义的texbox,我创建了一些依赖属性(例如,其中一个是当用户插入值时附加到文本框中的度量单位)。我们称之为ZTEXTBOX。下面我将向您展示一块ZTEXTBOX模板(实际上它比这更复杂)

<Style TargetType="{x:Type baseControls:ZTextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type baseControls:ZTextBox}">
                <Border Background="{TemplateBinding Background}">
                        <Grid x:Name="PART_grid">
                            <TextBox x:Name="PART_txt" FontFamily="{StaticResource KeyFont}" ... >

                            ...

在后面的ZTEXTBOX代码中,我有依赖属性,如度量单位:

        public string MeasureUnit {
        get {
            return (string)this.GetValue(MeasureUnitProperty);
        }
        set {
            this.SetValue(MeasureUnitProperty, value);
        }
    }

    public static readonly DependencyProperty MeasureUnitProperty = DependencyProperty.Register(
    "MeasureUnit", typeof(string), typeof(ZTextBox), new PropertyMetadata("", new PropertyChangedCallback(OnMeasureUnitChanged)));

    private static void OnMeasureUnitChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {

    }

现在我想基于之前的控件创建扩展控件。称之为EXPTEXTBOX。假设我想要一个新的自定义模板控件,其中包含标签描述,焦点边框和ZTEXTBOX。

    <Style TargetType="{x:Type baseControls:ExpTextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type baseControls:ExpTextBox}">
                <Grid>
                    <Border x:Name="PART_Border" ... Focusable="False">
                        <baseControls:ZTextBox x:Name="PART_Ztxt" ...>
                        </baseControls:ZTextBox>

我现在面临的问题是我想在EXPTEXTBOX之外提供ZTEXTBOX依赖属性。我认为这样做的唯一方法是将相同的ZTEXTBOX依赖属性复制到EXPTEXTBOX中,但我认为这很糟糕...... 是否有另一种方式,更优雅,实现这一目标?

非常感谢! 保罗

0 个答案:

没有答案