2011-11-14 23 views
1

我有以下問題:我正在設計一個UserControl,一個漸變色表。我決定使用MVVM設計模板,這是一個不錯的選擇。但是,我有以下問題。在View XAML文件中,我嘗試使用custtom轉換器將值轉換爲顏色,該轉換器需要2個參數。爲此,我用的是MultiBinding:如何將DataBinding設置爲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> 

的事情是,我不希望使用

{StaticResource的Palette_ISO1}

作爲第二個參數,但屬性,它是DataContext的直接屬性,不是ViewData集合成員的屬性。我嘗試了幾種方法來完成這種情況,但沒有顯着的成功。

截至去年,我曾嘗試以下:

<Binding Path="CurrentPallete"/> 

和CurrentPallete樣子:

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

即在類中的屬性,它的情況下被設置爲的一個DataContext主要是控件,它主控ItemControl。我得到的是在調試器,當相應的轉換器被調用,這可能意味着一個

[0x00000001] = {DependencyProperty.UnsetValue} 

值,該屬性不能被發現。任何人都可以指出達到預期效果的方式是什麼?非常感謝!

回答

0

你試過

<Binding Path="Palette_ICOS"/> 

如果Palette_ICOS是在當前項目的DataContext一個屬性綁定它應該工作。

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

我想你的意思是'路徑'那裏,也有一些釋義的話不會傷害。 –

+0

@ H.B。,是的,我的意思是路徑,而不是源... –

+0

正確,那是我需要的解決方案 –

相關問題