Привязка простого объекта bools к ListBox и выделение «истинных» элементов - PullRequest
1 голос
/ 09 сентября 2011

У меня очень простой класс

public class SimpleClass // abreviated for this example
{
    public bool HighAlert {get;set;}
    public bool LowAlert  {get;set;}
    // about 10 other bools
 }

Все они булевы значения.Я мог бы также использовать структуру или, возможно, массив, если это облегчает задачу.

Я бы хотел привязать данные к списку и ИБП, чтобы «истинные» значения были выделены синим или красным цветом.И, конечно, обновляется список, когда изменяется мой объект, созданный в SimpleClass.Мое единственное другое требование - иметь в списке что-то, кроме имен членов.Например, было бы неплохо иметь «Предупреждение о низком банковском счете», а не «Низкое предупреждение».

И, конечно, чем больше это автоматизировано (список фактически использует SimpleClass), тем лучше для этого неизбежного днякогда кто-то добавляет свойство в SimpleClass.

Какие-нибудь примеры или учебные пособия?Я думаю, это довольно распространенный сценарий.

Спасибо,

Дэйв

1 Ответ

0 голосов
/ 09 сентября 2011

Ваш вопрос, кажется, двоякий.

1) Условное форматирование.Вы можете использовать триггеры в своем списке, например:

<Style x:Key="ColoringStyle" TargetType="{x:Type ListBoxItem}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=HighAlert}" Value="True">
                <Setter Property="Background" Value="#33FF0000"></Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=LowAlert}" Value="True">
                <Setter Property="Background" Value="#33FFDD00"></Setter>
            </DataTrigger>

        </Style.Triggers>
    </Style>

2) Отображение элементов ListBox по-разному.в WPF вы можете использовать ItemTemplate:

<ListBox.ItemTemplate>
      <DataTemplate>
        <StackPanel Orientation="Horizontal">
              --- Have your custom display in here ---- 
        </StackPanel>
      </DataTemplate>
    </ListBox.ItemTemplate>

оба широко используются, пожалуйста, Google для любых подробных примеров, надеюсь, вы получили суть

...