У меня есть пользовательский элемент управления 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
И XAML для чего-то, что использует элемент управления LatLong
, будет выглядеть так:
<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?