WPF Listbox Databound
Domanda
Ho una casella di riepilogo legato ad un elenco di oggetti da una schermata di inserimento dei dati. Il modello voce include TextBlocks, una casella di controllo e caselle combinate.
Quando la casella di riepilogo è popolata Vorrei cambiare il colore di primo piano delle TextBlocks al rosso se object.value1 = true e object.value2 = 0.
Tutte le idee?
Soluzione
Il seguente codice di opere:
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>
Class
public class Model
{
public Int32 Value1 { get; set; }
public Int32 Value2 { get; set; }
public String Text { get; set; }
}
Codice
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;
Altri suggerimenti
Usa MVVM, e avere il vostro modello di vista espone una proprietà che controlla la condizione, e restituisce il colore. Quindi associare il colore di primo piano che la proprietà: -)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow