2011-02-24 14 views
0

MV4 LightをSL4で使用しています。私のビューはロケータを介してビューモデルを解決していますが、すべて正常です。Silverlight MVVM Light - xamlからコントロールの依存関係のプロパティ値を設定する

私の問題の1つは、別のビューで設定する必要があるプロパティがあります。

つまり、HomeViewにはコンポーネントビューのインスタンスが多数存在することがあります。しかし、そのホームビューでは、コンポーネントビューでプロパティを設定する必要があります。私はビューのコードの背後にある依存関係プロパティを追加しようとしました。これをHomeViewから設定できますが、コンポーネントビューモデルはそれを取得しません。

これは可能ですか?

ComponentControl.cs

public enum CustomStyle 
{ 
    Active, 
    Draft, 
    Completed 
} 

public class ComponentControl : Control 
{ 
    public ComponentControl() 
    { 
     DefaultStyleKey = typeof (ComponentControl); 
    } 

    public CustomStyle CustomType 
    { 
     get { return (CustomStyle)GetValue(CustomTypeProperty); } 
     set { SetValue(CustomTypeProperty, value); } 
    } 

    public static readonly DependencyProperty CustomTypeProperty = 
     DependencyProperty.Register("CustomType", 
     typeof(CustomStyle), 
     typeof(ComponentControl), null); 
} 

ComponentViewModel.cs

public CustomStyle CustomType 
{ 
    get { return _customType; } 
    set 
    { 
     if (value == _customType) 
      return; 

     _customType = value; 
     base.RaisePropertyChanged("CustomType"); 
    } 
} 
private CustomStyle _customType; 

ComponentView.xaml.cs

public static readonly DependencyProperty CustomTypeProperty = 
    DependencyProperty.Register("CustomType", 
    typeof(CustomStyle), 
    typeof(ComponentView), null); 

public CustomStyle CustomType 
{ 
    get { return (CustomStyle)GetValue(CustomTypeProperty); } 
    set { SetValue(CustomTypeProperty, value); } 
} 

ComponentView.xaml

<Grid> 
    <common:ComponentControl 
      DataContext="{Binding Path=WorkflowList, Mode=OneWay}" 
      CustomType="{Binding Path=CustomType, Mode=TwoWay, 
           ElementName=root}" /> 
</Grid> 

HomeView.xaml

<Grid x:Name="LayoutRoot"> 
    <common:HomeControl x:Name="homeControl"> 
     <common:HomeControl.ActiveContent> 
      <local:ComponentView x:Name="active" CustomType="Active" /> 
     </common:HomeControl.ActiveContent> 
     <common:HomeControl.DraftContent> 
      <local:ComponentView x:Name="draft" CustomType="Draft" /> 
     </common:HomeControl.DraftContent> 
     <common:HomeControl.CompletedContent> 
      <local:ComponentView x:Name="completed" CustomType="Completed" /> 
     </common:HomeControl.CompletedContent> 
    </common:HomeControl> 
</Grid> 

答えて

0

私はしばらく前に、私は同様の質問答え、私はあなたに少しを助けることができると思う:

Silverlight: How to bind to parent view's DataContext?

私の例の子ビューには依存関係プロパティが含まれています親ビューに値が設定されています。子ビューは、ElementName = "this"のバインディングを使用してその依存関係プロパティにバインドします

関連する問題