将嵌套的UserControl绑定到ViewModel中公开的属性

时间:2011-02-09 00:34:17

标签: wpf

我有一个UserControl,上面有一个图像。它的Visibility属性绑定到ViewModel上的一个属性(名为“On”)(它引发了一个PropertyChanged事件)。现在我想创建另一个UserControl,其中包含一些UserControl。它将拥有自己的ViewModel,它将公开另一组应该影响这些图像UserControls的属性。

我可以使用FindName并显式获取他们的视图模型并设置On属性,但我想知道是否有办法通过绑定处理这个,例如。

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

其中Image1On将是第二个UserControl的ViewModel上的另一个属性。

1 个答案:

答案 0 :(得分:0)

我通常会处理这种情况的方法是让您正在讨论的新视图模型包含具有“On”属性的原始视图模型的实例。 (无论是直接属性还是它们的集合取决于具体情况)然后,您只需处理视图模型的属性,而不是处理UI元素。

例如:“房间”视图模型包含“光”视图模型的集合。

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

   // Create a ICommand Implementation around this
   public void ToggleFrontLights(bool turnLightsOn)
   {
      frontLights.On = turnLightsOn;
   }}