HY,
我想将颜色属性绑定到选项卡内容的背景:
<CollectionViewSource x:Key="MyCollectionViewSource" Source="{Binding QuickDialColl, Source={x:Static vm:QuickDialViewModel.Instance}}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Category" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
QuickDialColl是QuickDial Objects的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}}"
但我希望它适用于tab contentpresenter的背景(因为同一类别的所有按钮都具有相同的背景颜色)。
我尝试使用相同的代码绑定wrappanel和listbox bacground属性,但它不起作用。
以下是我想得到的结果:
我肯定错过了这一点......
非常感谢你的帮助。 克里斯。
答案 0 :(得分: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();
}
}