В моем приложении у меня есть Usercontrol, который представляет некоторую конфигурацию для объекта. Внутри это Texblock, который содержит имя указанного объекта. Я хотел иметь возможность щелкнуть по этому текстовому блоку и превратить его в текстовое поле, чтобы вы могли редактировать имя.Как обновить привязку текстового поля при нажатии на текстовое поле
Я хочу, чтобы иметь следующие 3 поведения
- Устанавливает значение в ViewModel при входе нажатия
- Gain клавиатурного фокуса, когда он становится видимым
- Устанавливает значение в ViewModel, когда щелчке мышью за пределами текстового поля (как выпадающий делает)
и я в настоящее время застрял на 3. Как я могу получить текстовое поле, чтобы удовлетворить REQ uirement 3 - Щелчок с текстового поля устанавливает значение Я реализовал некоторые вложения, чтобы другие 2 работали, но не могут заставить мышь работать.
Я попытался следующие
- Добавлено PreviewMouseDown событие - Это только кажется, чтобы обнаружить, когда мышь вниз в текстовом поле
- Добавлено PreviewMouseDown даже в UserControl - это, кажется, чтобы получить удар, даже если текстовое поле. Кроме того, это не единственный пользовательский контроль внутри моего окна, поэтому он не будет работать в масштабе грандера.
- Добавлен PreviewMouseDownOutsideCapturedElement - но он никогда не сможет его запустить.
- потерял фокус на обоих UpdateSourceTrigger и как событие - Это работает, но только тогда, когда вы нажимаете на другое поле ввода, а не просто нажав от
код для моего текстового поля следующим образом.
<TextBox x:Name="text" VerticalAlignment="Center"
Margin="5,2,0,0"
Text="{Binding Name, Mode=TwoWay}"
Visibility="{Binding IsEditingName, Converter={StaticResource VisConverter}, FallbackValue=Collapsed}"
b:FocusBehaviours.ShouldFocusWhenVisible="True"
b:InputBehaviours.UpdatePropertySourceWhenEnterPressed="TextBox.Text"/>
Я посмотрел на бесчисленные SO постов и ни один из них не кажется, чтобы быть в состоянии помочь мне с этим, все они рекомендуют добавлять его в окно/UserControl, который я не могу сделать.
Как насчет установки 'UpdateSourceTrigger' на' LostFocus'? – Pikoh
@Pikoh Это работает только тогда, когда вы нажимаете на другое текстовое поле или поле со списком, а не просто нажимаете на него. То, что я имел в виду у LostFocus как для Binding, так и для Event, не мог вспомнить точное имя, когда писал, поэтому я отредактирую его, чтобы быть более понятным. Спасибо – Keithin8a
Итак, вы имеете в виду, когда вы нажимаете в любом месте своего пользовательского элемента управления, а не только на другой элемент управления, верно? то почему бы вам не сделать свой пользовательский контроль ориентированным? Я думаю, что это проще ... – Pikoh