У меня есть простейшее свойство в моей модели представлений типа string. Я хочу связать это с текстовым полем, чтобы изменение текстового поля обновляло строку и изменение строки обновляло текстовое поле. Я действительно ДЕЙСТВИТЕЛЬНО написал класс оболочки вокруг типа строки, который реализует INotifyPropertyChanged, или я пропустил что-то невероятно простое здесь?wpf привязка данных - двусторонняя привязка со строкой?
ответ
Это действительно просто реализовать INotifyPropertyChanged. Но что бы я сделал, классы ViewModel почти всегда (если не всегда) наследуются от DependencyObject; Я бы сделал это свойство text DependencyProperty, которое автоматически уведомляет изменения о том, к чему это привязано. Вы можете использовать ярлык propdp в C# (в Visual Studio 2008, не уверен, что тоже 2005) для создания DependencyProperty быстрее, просто введите propdp и дважды нажмите клавишу Tab. Это будет выглядеть примерно так:
public string SomeText
{
get { return (string)GetValue(SomeTextProperty); }
set { SetValue(SomeTextProperty, value); }
}
// Using a DependencyProperty as the backing store for SomeText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SomeTextProperty =
DependencyProperty.Register("SomeText", typeof(string), typeof(YourClassName), new UIPropertyMetadata(String.Empty));
Использовать DependencyProperty
.
Я дал Карло ответ, потому что он был немного более подробным, но оценил вас тоже. Благодаря! – Chris
На самом деле вам не придется создавать класс обертки вокруг типа строки. INotifyPropertyChanged должен быть реализован для каждого класса ViewModel. Этот интерфейс необходим для отправки уведомления в структуру привязки об измененных данных.
Я бы рекомендовал посетить http://mvvmfoundation.codeplex.com/ и включить классы фундамента MVVM в проект WPF. Фонд MVVM предоставляет базовый набор многоразовых классов, которые каждый должен использовать. Хотя есть другие обширные рамки WPF, такие как Cinch, Onyx и т. Д., Вы можете использовать.
- 1. WPF - Двусторонняя привязка
- 2. WPF двусторонняя привязка XML
- 3. WPF двусторонняя привязка бесконечный цикл
- 4. Angular2 двусторонняя привязка данных
- 5. Угловая двусторонняя привязка данных
- 6. Полимерная двусторонняя привязка данных
- 7. WPF datagrid dropdown двусторонняя привязка
- 8. Двусторонняя привязка данных Xml к WPF TreeView
- 9. DataGridCheckboxColumn двусторонняя привязка
- 10. ASP.Net и двусторонняя привязка данных
- 11. Двусторонняя привязка данных с Angular2
- 12. Двусторонняя привязка данных без XAML
- 13. Двусторонняя привязка данных - угловая 2
- 14. Двусторонняя привязка данных в NavigationDrawer
- 15. Двусторонняя привязка данных в * ngFor
- 16. WPF, двусторонняя привязка к хеш-таблице
- 17. ComboBox двусторонняя привязка к selecteditem
- 18. DataGrid двусторонняя привязка
- 19. Двусторонняя привязка в WPF не работает со статическими элементами
- 20. MVVM WPF - ComboBox двусторонняя привязка внутри ItemsControl
- 21. WPF двусторонняя привязка с внутренним установщиком
- 22. Почему моя двусторонняя привязка WPF становится отсоединенной?
- 23. WPF User Control - двусторонняя привязка не работает
- 24. Двусторонняя привязка к ContentControl
- 25. WPF ListView привязка данных?
- 26. Двусторонняя привязка атрибутов angularjs
- 27. ExtenderControlProperty двусторонняя привязка?
- 28. AngularJS - Двусторонняя привязка диапазона
- 29. Angularjs Manual Двусторонняя привязка
- 30. Двусторонняя привязка к DataGrid
Разве мы не делаем классы ViewModel тяжелыми, вызывая его из объекта зависимостей? – Trainee4Life
Возможно, но с выгодами. У меня нет фактов, чтобы точно сказать, что они должны всегда выводиться из DependencyObject, но я читал об этом во многих статьях и слышал во многих видеороликах, здесь, например, blog.lab49.com/archives/2650 Jason Dolinger Intro to шаблон MVVM. Это звучит правильно для меня, потому что класс VM будет контролировать все аспекты окна (состояние, анимация, привязка). – Carlo
Я тоже смотрел введение JD в MVVM и нашел, что это самый информативный скринкаст, который я видел на WPF. Это единственная причина, по которой я даже работаю с шаблоном MVVM прямо сейчас, вместо того, чтобы атаковать программу, используя встроенный стиль winforms для кодирования. Я не уверен, что объект весовой зависимости приносит с собой, но он кажется довольно естественным базовым классом, учитывая, какую цель должна использовать модель представления. – Chris