Frage

ich ein Listenfeld, um eine Liste von Objekten für einen Dateneingabebildschirm gebunden haben. Der Artikel Vorlage enthält Textblocks, ein Kontrollkästchen und Auswahlfelder.

Wenn die listbox bevölkert Ich möchte die Vordergrundfarbe der Textblöcke zu rot ändern, wenn object.value1 = true und object.value2 = 0 ist.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Der folgende Code funktioniert:

XAML

    <ListBox Name="ListBox1">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <DataTemplate.Triggers>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding Value1}"
                                       Value="1" />
                            <Condition Binding="{Binding Value2}"
                                       Value="0" />
                        </MultiDataTrigger.Conditions>
                        <MultiDataTrigger.Setters>
                            <Setter TargetName="RootBorder"
                                    Property="Border.Background"
                                    Value="#EEE" />
                        </MultiDataTrigger.Setters>
                    </MultiDataTrigger>
                </DataTemplate.Triggers>
                <Border Name="RootBorder">
                    <TextBlock Text="{Binding Text}" />
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Klasse

public class Model
{
    public Int32 Value1 { get; set; }
    public Int32 Value2 { get; set; }
    public String Text { get; set; }
}

Code

models.Add(new Model() { Value1 = 0, Value2 = 0, Text = "Item #1" });
models.Add(new Model() { Value1 = 1, Value2 = 0, Text = "Item #2" });
models.Add(new Model() { Value1 = 0, Value2 = 1, Text = "Item #3" });
models.Add(new Model() { Value1 = 0, Value2 = 0, Text = "Item #4" });
models.Add(new Model() { Value1 = 1, Value2 = 0, Text = "Item #5" });
models.Add(new Model() { Value1 = 0, Value2 = 1, Text = "Item #6" });
models.Add(new Model() { Value1 = 0, Value2 = 0, Text = "Item #7" });
models.Add(new Model() { Value1 = 1, Value2 = 0, Text = "Item #8" });
models.Add(new Model() { Value1 = 1, Value2 = 1, Text = "Item #9" });

ListBox1.ItemsSource = models;

Andere Tipps

Verwenden Sie MVVM und haben Ihrer Ansicht nach Modell eine Eigenschaft, die überprüft den Zustand aussetzen, und gibt die Farbe. Dann bindet die Vordergrundfarbe zu diesem Objekt: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top