2011-11-14 16 views
1

私は次のような問題があります。私はUserControl、段階的な色のゲージを設計しています。私はMVVMデザインのpaternを使うことに決めましたが、それは良い選択であることが判明しました。しかし、次のような問題があります。 View XAMLファイルでは、2つのパラメータを必要とするcusttomコンバータを使用して、値を色に変換しようとしています。この目的のために、私はMultiBindingのを使用します。XAMLの任意のプロパティにデータバインディングを設定するにはどうすればよいですか?

<ItemsControl ItemsSource="{Binding Path=ViewData}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Rectangle Height="2"> 
       <Rectangle.Fill> 
        <MultiBinding Converter="{StaticResource colorConverter}"> 
         <Binding Path="Value"/> 
         <Binding Source="{StaticResource Palette_ICOS}"/> 
        </MultiBinding> 
       </Rectangle.Fill> 
      </Rectangle> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

事は、私は2番目のパラメータとして

{StaticResource Palette_ISO1}

を使用しないこと、ですが、プロパティは、DataContextの直接プロパティであり、ViewDataコレクションメンバのプロパティではありません。私はこのシナリオを達成するためにいくつかの方法を試しましたが、成功を収めませんでした。

最後として、私は次のことを試してみました:

<Binding Path="CurrentPallete"/> 

をしてCurrentPalleteは、次のようになります。そのインスタンスのDataContextのように設定されたプロパティ、クラス、すなわち

public Palette CurrentPalette 
{ 
    get { return _currentPalette; } 
    set 
    { 
     _currentPalette = value; 
    } 
} 

メインコントロール、これはItemControlをホストします。私は何を得ることはおそらくプロパティが見つからないことを意味し、対応するコンバータが呼び出されたデバッガ、中

[0x00000001] = {DependencyProperty.UnsetValue} 

値、です。誰もが望む効果を達成する方法を指摘できますか?どうもありがとう!

答えて

0

Palette_ICOSは、現在の項目のDataContextは、それが動作するはずバインディングでプロパティである場合は、

<Binding Path="Palette_ICOS"/> 

を試してみました。

3
<Binding Path="DataContext.Palette_ICOS" 
     RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}" /> 
+0

あなたはそこに「パス」を意味していると思います。また、いくつかの言葉は傷つけません。 –

+0

@ H.B。はい、私はパス、ソースではないことを意味しました... –

+0

正解、それは必要な解決策です –

関連する問題