WPF TabItem的列表框动态绑定

问题描述:

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。

你的转换器应该返回,而不是颜色的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(); 
     } 
    }