WPF: Как обновить значения данных модели только при активной привязке? - PullRequest
1 голос
/ 30 августа 2010

Я работаю над приложением, которое связывается по сети для мониторинга переменных другого приложения.

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

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

Я думал об обновлении значений данных моей модели только тогда, когда привязки активны (что означает, что в пользовательском контроле отображаются некоторые переменные), как вы думаете, это хорошее решение?В противном случае я мог бы также работать со свойством «IsVisible» каждого пользовательского элемента управления ... но я думаю, что было бы лучше работать на стороне модели моего приложения, я думаю.

Знаете ли вы, если естьспособ узнать, активна ли привязка или нет?

Если мой вопрос недостаточно ясен, я мог бы нарисовать небольшую схему.Просто скажи мне.

Ответы [ 3 ]

2 голосов
/ 30 августа 2010

Помните, что привязка обновляется только тогда, когда изменение публикуется через INotifyPropertyChanged (или в случае двусторонней привязки ваш пользовательский интерфейс изменяет переменную двухсторонней привязки).Большую часть времени вы будете явно запрашивать службу.Когда ответ службы вернется, вы измените свойства в своей ViewModel и вызовете событие PropertyChanged, чтобы сообщить привязкам об обновлении.

По сути, ваша привязка не будет обновляться, если вы не скажете это.ObservableCollections автоматически обновит привязку, поскольку они внутренне реализуют INotifyPropertyChanged.Но, тем не менее, это происходит только при обновлении коллекции.

Чтобы ответить на ваш вопрос, да, сохраняйте сетевую болтовню, обновляя только тогда, когда это абсолютно необходимо.Поскольку вы используете WPF и INotifyPropertyChanged, это произойдет только тогда, когда вы вызовете обновление для связанной переменной + запустите событие.

0 голосов
/ 01 июня 2011

Этот ТАК вопрос и ответы вдохновили меня на создание расширения разметки с именем VisibleBinding при его использовании - привязка будет применена (поэтому будет прослушивать INotifyPropertyChanged для источника) только тогда, когда элемент управления виден.* сообщение в блоге для более подробной информации.

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

Если привязка «активна» (я предполагаю, что вы имеете в виду, что свойства заинтересованы в этом свойстве), они вызовут метод получения для свойства notifypropertychanged для конкретного свойства.

Таким образом, пока вы не запускаете NotifyPropertyChanged излишне, каждый раз, когда вызывается get вашего свойства, вы можете делать любые обновления данных, применимые к этому свойству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...