WPF LinearGradientBrush with Binding doesnt work. Without LinearGradientBrush it works?

61 Views Asked by At

I dont know why this does not work? The whole Listbox is a bit complicated but my Question is acctually simple:

Here is my ListBox xaml Code:

<ListBox SelectionMode="Single" ItemsSource="{Binding Path=SoldItems}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" SelectedItem="{Binding Path=SelectedItem}">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Horizontal" IsItemsHost="True"></WrapPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Width="80" Height="80" IsItemsHost="False" Background="{Binding Path=Quality.Brush}">

                        <Label HorizontalContentAlignment="Left" Style="{StaticResource Item}"  Content="{Binding Path=Count}"></Label>
                        <Label Style="{StaticResource Item}" Content="{Binding Path=Name}"></Label>
                        <Label Style="{StaticResource Item}"  Content="{Binding Path=Certification.Name}"></Label>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

The important part is the StackPanel after: It's Background Brush is set to the Items : Quality.Brush

Item Class:

 public class Item
{
    /// <summary>
    /// Qualität des Item
    /// </summary>
    private Quality quality;

    /// <summary>
    /// Accsessor der Qualität 
    /// </summary>
    public Quality Quality
    {
        get { return quality; }
        set { quality = value; }
    }
}

There is more in the Item Class such as Name, Count... (Which is not important bc the binding with these works just fine.

Here is the Quality class:

 public class Quality
{
    #region Property

    /// <summary>
    /// Name der Qualität
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// Farbe
    /// </summary>
    public SolidColorBrush Brush { get; set; }

    #endregion

    #region Ctor

    /// <summary>
    /// Ctor
    /// </summary>
    public Quality()
    {

    }

    /// <summary>
    /// Ctor
    /// </summary>
    /// <param name="name">Name</param>
    public Quality(string name, SolidColorBrush brush)
    {
        Brush = brush;
        Name = name;
    }

    #endregion
}

Everything works fine if i do it that way. Result: Works Fine

What doesnt work is if I change Background=... to this:

<StackPanel.Background>
                            <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                <GradientStop Color="{Binding Path=Quality.Brush}" Offset="1"/>
                                <GradientStop Color="Black" Offset="0"/>
                            </LinearGradientBrush>
                        </StackPanel.Background>

Can someone tell me why this doesnt work?

Output of the 2nd code:

Doesnt work like expected

0

There are 0 best solutions below