binden Ich habe Probleme mit der Bindung der Farbe von Code hinter einer Farbe als Ressource in XAML definiert. Die Bindung funktioniert gut für den Text (alias Nachricht), aber ich kann es nicht für die in XAML definierten Farben tun. Hier ist der abgespeckte Code, den ich benutze.Wie an XAML Ressourcenfarbe aus Code hinter
Die XAML:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<SolidColorBrush x:Key="BlueBrush" Color="#FFCFEDFF" />
<SolidColorBrush x:Key="GreenBrush" Color="#FFE5EFC8" />
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding List, ElementName=UI}" x:Name="listBox" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.Background>
>>> <SolidColorBrush Color="{StaticResource {Binding Path=Background}}"/> <<< Here is my problem <<<
</Grid.Background>
<TextBlock Text="{Binding Message}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
Der Code hinter:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication3
{
public partial class MainWindow : Window
{
private ObservableCollection<Line> buffer;
public MainWindow()
{
InitializeComponent();
buffer = new ObservableCollection<Line>();
listBox.ItemsSource = buffer;
buffer.Add(new Line("Line1", "BlueBrush"));
buffer.Add(new Line("Line2", "GreenBrush"));
}
public class Line
{
private string _message;
private string _background;
public Line(String message, String background)
{
this._message = message;
this._background = background;
}
public string Message
{
get { return _message; }
set { _message = value; }
}
public string Background
{
get { return _background; }
set { _background = value; }
}
}
}
}
Siehe hier: http://stackoverflow.com/q/13262037/1136211 – Clemens
ich diesen Beitrag gesehen haben, aber es etwa dynamicaly schafft Ressourcen. Das ist ein anderer Ansatz. – thowa