WPF Databound Listbox - PullRequest
       8

WPF Databound Listbox

0 голосов
/ 16 июня 2010

У меня есть список, связанный со списком объектов для экрана ввода данных. Шаблон элемента включает в себя текстовые блоки, флажки и комбинированные списки.

Когда список заполнен, я хочу изменить цвет переднего плана текстовых блоков на красный, если object.value1 = true и object.value2 = 0.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 16 июня 2010

работает следующий код:

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>

Класс

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

Код

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;
0 голосов
/ 16 июня 2010

Используйте MVVM, и ваша модель представления предоставляет свойство, которое проверяет условие и возвращает цвет. Затем привяжите цвет переднего плана к этому свойству: -)

...