我有一個名爲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