我有一个名为TextBoxWithLabelAndUnits
的自定义控件。从名字,你可以说这是一个TextBox
是收到了Label
和之后一个Label
,以便自定义控制是这样的:如何在用户控件中公开自定义控件属性?
-----------------
Label: | | units
-----------------
我揭露几个依赖属性来配置控制,例如如:
LabelWidth
LabelText
UnitText
TextBoxWidth
现在我有一个用户控件调用LatLong
,我使用的纬度/经度输入。在XAML看起来是这样的:
<UserControl ...>
<StackPanel>
<TextBoxWithLabelAndUnits LabelText="Latitude:"
UnitText="degrees"
/>
<TextBoxWithLabelAndUnits LabelText="Longitude:"
UnitText="degrees"
/>
</StackPanel>
</UserControl>
这将创建一个看起来像这样的用户控件:
-----------------
Latitude: | | degrees
-----------------
-----------------
Longitude: | | degrees
-----------------
现在我想用我的用户控件中的一个项目。但是,我希望用户控件公开属性,以便我可以更改标签,如果我不喜欢默认设置。我可以公开每一个作为一个新的依赖属性看起来像这样:
LatitudeLabelWidth
LatitudeLabelText
LatitudeUnitText
LatitudeTextBoxWidth
LongitudeLabelWidth
LongitudeLabelText
LongitudeUnitText
LongitudeTextBoxWidth
和使用一个LatLong
控制XAML的东西看起来就像这样:
<Window ...>
<LatLong LatitudeLabelText="Latitude (in degrees)"
LatitudeUnitText=""
LongitudeLabelText="Longitude (in degrees)"
LongitudeUnitText=""
/>
</Window>
,但似乎像很多因为我必须重新公开每个实例的每个依赖项属性。我在想,如果有一个公开TextBoxWithLabelAndUnits
实例本身更简单的方法,这样我就可以直接编辑它的属性和使用XAML看起来像这样:
<Window ...>
<LatLong Latitude.LabelText="Latitude (in degrees)"
Latitude.UnitText=""
Longitude.LabelText="Longitude (in degrees)"
Longitude.UnitText=""
/>
</Window>
所以,换句话说,而不是暴露的属性在用户控件内部的每个自定义控件上,我公开了自定义控件,并使用点符号访问所有属性。
有谁知道这是可能做WPF?
嗨丹,我试过了,虽然它允许您访问代码中的控件,但我还需要能够在XAML中设置属性。任何想法在这种情况下我能做些什么? – 2010-08-19 19:36:55