Новое в привязке данных WPF - PullRequest
2 голосов
/ 20 января 2011

Я новичок в связывании данных WPF и немного застрял.
Видимо, мое текстовое поле неправильно связано с элементом данных, который я намереваюсь, и я не могу понять, почему.

Сначала в моемMainWindow.xaml file, я объявляю объект:

<Window.Resources>
    <local:Aircraft x:Key="Aircraft"/>
</Window.Resources>

Это создает объект типа Aircraft во время MainWindow.InitializeComponent()
(я могу проверить это, установив точку останова на конструкторе Aircraft)

Класс Aircraft определен в файле .cs со свойством Pilot со свойством Weight, так что myAircraft.Pilot.Weight является int.

Далее я пытаюсьчтобы привязать текстовое поле к этому свойству:

<TextBox Name="PICWeight" DataContext="{Binding Source={StaticResource Aircraft}, Path=Pilot.Weight}" />

Приложение компилируется и запускается, но когда я помещаю числовой текст в текстовое поле, а затем перемещаю фокус в другое текстовое поле, я ожидаю увидеть setter дляPilot.Weight Вам позвонят (у меня есть точка останова).Это не так.

Я считаю, что должен быть ValueConverter по умолчанию от String (из текстового поля) до int (тип свойства Weight), и что у текстовых полей должно быть событие update-source по умолчанию LostFocus.

Правильно ли я указываю привязку?
Нужно ли создавать ValueConverter или явно указывать событие обновления?
Есть ли что-то еще, что я делаю неправильно?

1 Ответ

10 голосов
/ 20 января 2011

Вам необходимо связать свойство Text, а не только DataContext, например:

<TextBox Name="PICWeight" DataContext="{Binding Source={StaticResource Aircraft}}" Text="{Binding Path=Pilot.Weight}" />

или

<TextBox Name="PICWeight" Text="{Binding Source={StaticResource Aircraft}, Path=Pilot.Weight}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...