StaticResource и DynamicResource в XAML

#c# #wpf #xaml

#c# #wpf #xaml

Вопрос:

В настоящее время я просматриваю примеры WPF на этом GitHub. Это простое приложение — оно привязывает текстовое поле к метке. Всякий раз, когда текст текстового поля изменяется, метка также изменяется с помощью привязки данных.

Теперь я читаю, что StaticResource вычисляется в момент создания объекта XAML и не может быть изменен позже, в то время как DynamicResource вычисляется при каждом обращении к нему.

В этой программе, как мне кажется, следует использовать DynamicResources, однако присутствуют только два StaticResources.

Вот что я бы счел ключевым кодом:

 // ...
<Window.Resources>
    <local:Person x:Key="MyDataSource" PersonName="Joe"/>
    </Window.Resources>
// ...
            <TextBox>
            <TextBox.Text>
                <Binding Source="{StaticResource MyDataSource}" Path="PersonName"
               UpdateSourceTrigger="PropertyChanged"/>
            </TextBox.Text>
        </TextBox>

        <Label>The name you entered:</Label>
        <TextBlock Text="{Binding Source={StaticResource MyDataSource}, Path=PersonName}"/>
  

Как получилось, что это работает со StaticResources?

Комментарии:

1. Объект, на который ссылается StaticResource MyDataSource , не изменяется, изменяется только значение его свойства PersonName.

Ответ №1:

Как указано Клеменсом,

Объект, на который ссылается StaticResource MyDataSource, не изменяется, изменяется только значение его свойства PersonName.