簡體   English   中英

WPF TabItem Listbox動態綁定

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM