2011-02-09 7 views
0

私はUserControlにイメージがあります。 ViewModel(PropertyChangedイベントを発生させます)のプロパティ( "On"という名前)にバインドされたVisibilityプロパティを持っています。今私はこれらのUserControlsのいくつかを含む別のUserControlを作成したいと思います。それは、独自のViewModelを持ち、これらのイメージUserControlsに影響する別のプロパティを公開します。ViewModelで公開されているプロパティにネストされたUserControlをバインドします。

FindNameを使用して明示的にビューモデルを取得してOnプロパティを設定することはできますが、バインディングでこれを処理する方法があるかどうかは疑問でした。

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

ここで、Image1Onは、2番目のUserControlのViewModelの別のプロパティです。

答えて

0

私が通常処理する方法は、あなたが話している新しいビューモデルに、「オン」プロパティを持つ元のビューモデルのインスタンスが含まれるようにすることです。 (それが直接のプロパティでも、それらのコレクションでも状況によって異なります)UI要素を扱う代わりに、ビューモデルのプロパティを扱うだけです。

例:「ルーム」ビューモデルには、「ライト」ビューモデルのコレクションが含まれています。

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

    // Create a ICommand Implementation around this 
    public void ToggleFrontLights(bool turnLightsOn) 
    { 
     frontLights.On = turnLightsOn; 
    }} 
関連する問題