Пытаясь понять, как этот код работает:Как работают свойства зависимостей?
Создать свойство зависимостей,
public int YearPublished
{
get { return (int)GetValue(YearPublishedProperty); }
set { SetValue(YearPublishedProperty, value); }
}
public static readonly DependencyProperty YearPublishedProperty =
DependencyProperty.Register(
"YearPublished",
typeof(int),
typeof(SimpleControl),
new PropertyMetadata(2000));
Затем используйте его в форме,
<xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<local:SimpleControl x:Name="_simple" />
<TextBlock Text="{Binding YearPublished, ElementName=_simple}"
FontSize="30"
TextAlignment="Center" />
<Button Content="Change Value"
FontSize="20"
Click="Button_Click_1"/>
</StackPanel>
Тогда для Button_Click_1
сделать,
private void Button_Click_1(object sender, RoutedEventArgs e)
{
_simple.YearPublished++;
}
Это работает. Каждый раз, когда вы нажимаете кнопку, номер должен быть изменен из PropertyMetadata - с 2000 ++, но также я видел его в форме в textBox.
Вопрос: Почему?
Если я не ставил код для обновления TextBlock в основной форме, он автоматически обновляется или есть какой-то скрытый механизм для него? Или, может быть, я не совсем понимаю, как это работает. Или, может быть, если в его собственности есть функции, которые обновляют номер в форме.
Итак, если я использую 'Text = {{Binding YearPublished, ElementName = _simple}" 'Автоматическое связывание, добавьте отражающий эффект на изменения? – gbk
oh, found 'Когда привязка установлена и данные изменяются, элементы пользовательского интерфейса, привязанные к данным, могут автоматически отражать изменения.' Http://msdn.microsoft.com/en-us/library/cc278072(v = vs.95) .aspx – gbk