2016-07-29 3 views
0

Предположим, я хочу отображать информацию о конкретной строке ListView (отображается горизонтально здесь, так что это технические столбцы) для имитации календарной визуальной информации.WPF - Как явно установить индекс элемента внутри ListView?

Result structure

Первая строка представляет собой список номеров в день (первая-31 июля).

Две другие строки - это числа, поступающие из двух разных CSV-экспонатов, где я сравниваю два числа в тот же день.

Я использую первый ListView для дат, который остается статичным, и отображает список целых чисел. Я использую другой ListView, который содержит модель «DayData».

public class DayData 
{ 
    // Top number displayed 
    public float topNumber { get; set; } 

    // Bottom number displayed 
    public float bottomNumber { get; set; } 

    // Matching day for this entry 
    public int matchingDay { get; set; } 

    // Color used to alert user in case of bad ratio 
    public string color { get; set; } 

    /// <summary> 
    /// Initializes a new instance of the <see cref="T:System.Object"/> class. 
    /// </summary> 
    public DayData() 
    { 
     this.topNumber = -1; 
     this.bottomNumber = -1; 
    } 
} 

Теперь мой вопрос, когда сравниваемые числа пусты в этот день, я хочу список, чтобы отобразить «пустую» запись, или, по крайней мере, показать какое-то запас, чтобы правильно выровнять число, так что DayData соответствует их соответствию номера дня, например, так:

Result wanted

Вы, наверное, предположить, чтобы добавить «нулевую» запись в список, однако это вызывает проблемы с производительностью, а другой ListView принимает все это, который сам отображает несколько записей ListViews + другие вещи сразу. Однако нет никаких проблем при отображении только записей DayData, так как ListView никогда не будет содержать более 20 одновременно в течение месяца.

Есть ли какое-либо обходное решение, такое как управление сеткой с шаблонами данных, где я мог бы установить строки и столбцы самостоятельно и привязать их к модели DayData, чтобы правильно их выровнять?

Заранее спасибо.

+0

Есть ли конкретная причина, по которой вы не используете столбцы ? – Gusdor

+0

Что вы подразумеваете под этим? Я не могу использовать столбцы внутри ListView. Не существует понятия столбцов и ни строк. Только «Элементы», которые автоматически складываются. –

+1

Сам по себе «ListView» ведет себя как «Listbox». Однако вы можете изменить представление элементов по своему усмотрению, изменив свойство 'View'. Внедренная реализация - это «GridView», которая позволит вам использовать столбцы http://www.wpf-tutorial.com/listview-control/listview-with-gridview/ – Gusdor

ответ

0

Так вы можете использовать столбцы для каждого элемента, из-за чего ваша проблема исчезнет, ​​так как вы можете изменять размер столбцов. Просмотр списка:

<ListView x:Name="testCaseView" HorizontalAlignment="Left" Height="737" Margin="0,182,0,0" VerticalAlignment="Top" Width="1914" FontFamily="Eras ITC" Foreground="Black"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn DisplayMemberBinding="{Binding testCase}" Header="Test Case" Width="auto"/> 
       <GridViewColumn DisplayMemberBinding="{Binding condition}" Header="Condition" Width="auto"/> 
       <GridViewColumn DisplayMemberBinding="{Binding description}" Header="Description" Width="auto"/> 
       <GridViewColumn DisplayMemberBinding="{Binding expectedResults}" Header="Expected Results" Width="auto"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 

C# создать элемент для хранения всех полей строки:

public class TestCaseItem 
{ 
    public String testCase { get; set; } 
    public String condition { get; set; } 
    public String description { get; set; } 
    public String expectedResults { get; set; } 
} 

Затем заселить ListView:

testCaseView.Items.Add(new TestCaseItem { testCase = "", condition = "", description = "", expectedResults = "" }); 
+0

Дело в том, что я не могу просто определить их вручную в xaml. Я должен иметь возможность добавлять их программно в зависимости от размера списка дней (количество дней в месяце может меняться). –

+0

Вам нужен отдельный столбец для каждого дня для каждого элемента? –

+0

Да, посмотрите на скриншоты в исходном посте. –

Смежные вопросы