2016-03-21 125 views
0

HY,WPF TabItem的列表框動態綁定

我想的彩色屬性綁定到選項卡內容的背景:

<CollectionViewSource x:Key="MyCollectionViewSource" Source="{Binding QuickDialColl, Source={x:Static vm:QuickDialViewModel.Instance}}"> 
     <CollectionViewSource.GroupDescriptions> 
      <PropertyGroupDescription PropertyName="Category" /> 
     </CollectionViewSource.GroupDescriptions> 
    </CollectionViewSource> 

的QuickDialColl被QuickDial對象的一個​​ObservableCollection:

class QuickDial 
{ 
    public string Name { get; set; } 
    public string ToolTip { get; set; } 
    public string Number { get; set; } 
    public string Category { get; set; } 
    public string CustomBackgroundColor { get; set; } 
    public string TextColor { get; set; } 

    public QuickDial() 
    { 
    } 
} 

<TabControl ItemsSource="{Binding Groups, Source={StaticResource MyCollectionViewSource}}" SelectedIndex="0" > 

    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 

    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <ListBox ItemsSource="{Binding Items}" 
       IsManipulationEnabled="False" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       HorizontalContentAlignment="Stretch" 
       VerticalContentAlignment="Stretch"> 

       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <WrapPanel /> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 

       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Button Content="{Binding Name}" 
          Background="{Binding CustomBackgroundColor,Converter={StaticResource HexToColorConverter}}" 
          ToolTip="{Binding ToolTip}" 
          Width="130" 
          Margin="2,2,2,2" 
          /> 

        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 

</TabControl> 

的動態綁定是確定的按鈕用:

Background="{Binding CustomBackgroundColor,Converter={StaticResource HexToColorConverter}}" 

但我想它的工作原理爲標籤contentpresenter的背景(爲同一類別的所有按鈕具有相同背景顏色)。

我試圖用相同的一段代碼綁定wrappanel和listbox的bacground屬性,但它沒有工作。

下面是結果我想獲得:

Tab Content background

我肯定錯過了點...

非常感謝您的幫助。 Chris。

回答

0

你的轉換器應該返回,而不是顏色的SolidColorBrush

public class HexToColorConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return new SolidColorBrush(Colors.Blue); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    }