Привязка вложенных элементов UserControls к свойствам, предоставляемым в ViewModel - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть UserControl, на котором есть изображение. У него есть свойство Visibility, привязанное к свойству (с именем «On») в ViewModel (которое вызывает событие PropertyChanged). Теперь я хотел бы создать еще один UserControl, который содержит несколько таких UserControls. Он будет иметь свою собственную ViewModel, которая будет предоставлять другой набор свойств, которые должны влиять на эти пользовательские элементы управления изображением.

Я мог бы просто использовать FindName и явно захватить их модель представления и установить свойство On, но мне было интересно, есть ли способ справиться с этим посредством привязки, например.

<local:MyImageView x:Name="MyImage1" On="{Binding Image1On}" />

Где Image1On будет другим свойством второй ViewCoderol UserControl.

1 Ответ

0 голосов
/ 09 февраля 2011

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

Например: модель вида «Комната» содержит коллекцию моделей вида «Свет».

public class RoomViewModel
{
   LightViewModel frontLights
   {
      //implementation
   }
   LightViewModel rearLights
   { 
     //implementation
   }

   // Create a ICommand Implementation around this
   public void ToggleFrontLights(bool turnLightsOn)
   {
      frontLights.On = turnLightsOn;
   }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...