Заполняющие столбцы окна
-
22-09-2019 - |
Вопрос
То, что я пытаюсь сделать, это заполнить два столбца в окне. Эти столбцы будут иметь имя глобальной переменной и путь к ней. У меня проблемы с отображением того, что мне нужно в окнах.
<TabItem Header="Global Variables" GotFocus="GlobalVariablesTab_GotFocus">
<dc:TreeListView Name="tvwGlobalVariables" dc:ColumnLayoutManager.Enabled="True" >
<dc:TreeListView.Columns>
<!--First Column. -->
<dc:StdGridViewColumn Header="Variable" Width="200" >
<dc:StdGridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextTrimming="CharacterEllipsis"/>
</DataTemplate>
</dc:StdGridViewColumn.CellTemplate>
</dc:StdGridViewColumn>
<!-- Second Column-->
<dc:StdGridViewColumn Header="Result" dc:ColumnRange.IsFillColumn="True"/>
</dc:TreeListView.Columns>
</dc:TreeListView>
</TabItem>
Это та вкладка, в которой есть область, которая мне нужно заполнить. Первый столбец для имени и второй будет для пути. Я могу что -то упустить.
private void GlobalVariablesTab_GotFocus(object sender, RoutedEventArgs e)
{
lvGlobals.Items.Clear();
sman = SchemaManager.SchemaManager.GetInstance();
IEnumerator enumerator = sman.GetGlobalVariableEnumerator();
while (enumerator.MoveNext())
{
DictionaryEntry entry = (DictionaryEntry) enumerator.Current;
ListViewItem lvi = new ListViewItem();//new string[] {entry.Key.ToString(), entry.Value.ToString()});
lvi.Tag = entry.Key.ToString() + entry.Value.ToString();
}
}
В настоящее время у меня есть LVI, удерживая обе части, но мне понадобится одна часть, чтобы перейти к первой столбце, а другая часть - в другой столбец. Я не собираюсь держать LVI, если мне это не нужно. В любом случае мне нужно получить entry.key
отображается в первом столбце и entry.value
во-вторых. Любые идеи?
Решение
Я не знаю, что такое схемы схемы, поэтому я просто использовал хэштату с некоторыми фиктивными данными, чтобы получить перечислитель с некоторыми записями в словаре. Ниже пример кода использует обычный WPF ListView с двумя столбцами без форматирования, чтобы сделать его простым.
Xaml:
<Window x:Class="TwoColsDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<ListView ItemsSource="{Binding Path=Data}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Key" DisplayMemberBinding="{Binding Path=Key}" />
<GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Window>
Код позади:
using System.Collections;
using System.Collections.Generic;
using System.Windows;
namespace TwoColsDemo
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Hashtable sman = new Hashtable();
sman.Add("Key1", "Value1");
sman.Add("Key2", "Value2");
Data = new List<DictionaryEntry>();
IEnumerator enumerator = sman.GetEnumerator();
while (enumerator.MoveNext())
{
DictionaryEntry entry = (DictionaryEntry)enumerator.Current;
Data.Add(entry);
}
DataContext = this;
}
public List<DictionaryEntry> Data { get; private set; }
}
}