[英]WPF TabItem Listbox dynamic binding
HY,
我想將color屬性綁定到選項卡內容的背景:
<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屬性綁定在一起,但是沒有用。
這是我想要得到的結果:
我肯定錯過了重點...
非常感謝您的幫助。 克里斯。
您的轉換器應返回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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.