Вам действительно не нужно свойство зависимости для вашего пользовательского элемента управления, на самом деле вы должны стремиться сохранить пользовательские элементы управления без чего-либо особенного в выделенном фрагменте кода, для этого должны использоваться пользовательские элементы управления.
Вы должны определить свой UserControl следующим образом (без кода):
<UserControl x:Class="DAS1.LabeledField"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Orientation="Horizontal">
<Label Width="100" Height="30" Name="fieldNameLabel" Content="{Binding fieldName}" />
<Label Width="100" Height="30" Name="fieldValueLabel" Content="{Binding field}" />
</StackPanel>
Затем убедитесь, что ваш бизнес-объект реализует INotifyPropertyChanged, потому что вы не можете эффективно обновить свой бизнес-объект, не изменив его хотя бы так сильно. fieldName
является лишь примером того, как можно автоматически привязать отображаемое имя на метке к свойству вашего бизнес-объекта.
Затем просто убедитесь, что DataContext вашего UserControl является вашим бизнес-объектом.
Как это будет работать? Свойство Label.Content является DependencyProperty и будет поддерживать само связывание. Ваш бизнес-объект реализует INotifyPropertyChanged и, таким образом, поддерживает обновления для привязки - без него система привязки не получает уведомление при изменении значения вашего поля, независимо от того, привязали ли вы его к DependencyProperty на одном конце .
И если вы хотите повторно использовать этот пользовательский элемент управления в другом месте, просто поместите нужный экземпляр вашего бизнес-объекта в DataContext требуемого элемента управления LabeledField. Привязка будет подключена к DataContext.