Двусторонняя привязка в WPF: почему имеет значение, на каком свойстве я указываю привязку, когда связываю два свойства одного и того же элемента управления? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть 2 текстовых поля, и я хочу, чтобы значение каждого текстового поля влияло на его собственный размер шрифта.

<WrapPanel>
    <TextBox x:Name="text1" Text="15" FontSize="{Binding Text, ElementName=text1}"/>
    <TextBox x:Name="text2" Text="{Binding FontSize, ElementName=text2}" FontSize="15"/>
</WrapPanel>

В приведенном выше примере, когда пользователь изменяет значение первого текстового поля на другое число, размер шрифта изменяется; однако это не происходит для второго текстового поля. В первом текстовом поле я указываю привязку в значении свойства FontSize, но во втором текстовом поле я указываю привязку в значении свойства Text. Поскольку это двусторонние привязки, почему они не ведут себя одинаково?

1 Ответ

0 голосов
/ 30 августа 2018

На самом деле то, что вы написали, работает. По умолчанию свойство TextBox Text обновляется из источника привязки, когда TextBox теряет фокус. Поэтому, если вы введете что-то в text2 (то есть 48), вы не увидите, как оно изменится, пока не сосредоточитесь на каком-то другом объекте (то есть снова щелкните на text1).

Если вы хотите изменить это, чтобы соответствовать поведению text1, сделайте следующее:

<TextBox x:Name="text2" Text="{Binding FontSize, ElementName=text2, UpdateSourceTrigger=PropertyChanged}" FontSize="15"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...