У меня есть пользовательский элемент управления с именем Field:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Name="LblName"/>
<TextBox Grid.Row="0" Grid.Column="1" HorizontalContentAlignment="Left" Name="TxtValue"/>
</Grid>
В CS-файле я раскрываю нижеприведенное свойство, которое просто устанавливает значение ".text" для текстового поля.
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
"Value",
typeof(string),
typeof(Field),
new PropertyMetadata(
default(string),
(source, args) => (source as Field).TxtValue.Text = (string)args.NewValue
)
);
[Category("Custom")]
public string Value
{
get
{
return (string)this.GetValue(ValueProperty);
}
set
{
this.SetValue(ValueProperty, value);
}
}
Первый вопрос. Является ли это правильным способом, которым мы распространяем свойства зависимостей дочернего пользовательского элемента управления, резервное копирование через родительский пользовательский элемент управления, чтобы его можно было установить со страницы xaml? Я осмотрел сеть, там не так много, учитывая, что это довольно примитивная вещь при написании пользовательских элементов управления.
Подробно описывая общую картину, у меня есть страница сведений о клиенте, некоторые элементы управления привязаны к объекту клиента, который содержится в наблюдаемой коллекции. Если я изменю значение текстового поля (которое содержится в элементе управления Field) на странице с «xxxx» на «yyyy», я всегда получаю обратно «xxxx». Кажется, что-то не так где-то вокруг геттера?