首先抱歉,如果这个问题的标题是如此“通用”......所以,我有以下问题:我有一个自定义的模板化控件,它只不过是一个自定义的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中,但我认为这很糟糕...... 是否有另一种方式,更优雅,实现这一目标?
非常感谢! 保罗