2010-11-15 197 views
1

考慮以下XAML代碼:WPF數據綁定

 
    <StackPanel> 
     <ListBox x:Name="lbColor"> 
      <ListBoxItem Content="Blue"/> 
      <ListBoxItem Content="Green"/> 
      <ListBoxItem Content="Yellow"/> 
     </ListBox> 
     <TextBlock> 
      <TextBlock.Text> 
       <Binding ElementName="lbColor" Path="SelectedItem.Content"/> 
      </TextBlock.Text> 
      <TextBlock.Background> 
       <Binding ElementName="lbColor" Path="SelectedItem.Content"/> 
      </TextBlock.Background> 
     </TextBlock> 
    </StackPanel> 

我瞭解Text屬性結合的作品。在內部它被轉換成類似於:

 
textBlock.Text = lbColor.SelectedItem.Content; 

但是背景如何綁定到同一個源?此代碼:

 
textBlock.Background = lbColor.SelectedItem.Content; 

不正確。它如何工作?順便說一句,它的作品,並顯示正確的背景顏色。

我看到的唯一方法是使用給定名稱獲取System.Windows.Media.Colors屬性,從中創建SolidColorBrush並將其分配給Background屬性。但是代碼中沒有指向這條路徑的東西。

回答

5

這是有效的,因爲有一個內置轉換允許WPF從String轉換爲Brush(這是Background屬性的必需類型)。

如果您查看Brush的MSDN文檔,您會發現它裝有TypeConverter屬性,該屬性指定類型爲BrushConverter的轉換器。

有關類型轉換器的一般信息,有this article

+0

感謝的讀取。有沒有關於這方面的一些文件?在不知道這些細節的情況下,我覺得自己像一隻猴子打字亂碼。 – 2010-11-15 11:54:59

+1

關於內置轉換器的問題已經在這裏得到解答 - http://stackoverflow.com/questions/505397/built-in-wpf-ivalueconverters – Stimul8d 2010-11-15 12:09:23