2010-01-26 66 views
0

我想要做的是在窗口中填充两列。此列将具有全局变量的名称及其路径。我有问题显示我需要在窗口中。填充窗口的列

 <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,但我需要一个部分去第一列和另一部分到另一列。如果我不需要它,我不打算保留它。无论哪种方式,我需要在第一列中显示entry.key,在第二列中显示entry.value。有任何想法吗?

+0

如果有人需要更多的信息,只是让我知道,我说什么,我虽然是相关的,但我不知道很多关于这一切所以这只是一个假设。 – Krill 2010-01-26 14:23:03

+1

我可以给你代码,以正常的列表视图显示两列。 由于您使用的专有TreeListView甚至可能无法正常工作,因此很难判断您的代码出了什么问题。但是从查看你的代码中猜测,我发现了两个潜在的问题。 首先,如果你使用的DataTemplates为CellTemplates要使用数据绑定和不乱用ListViewItems。在ListViewItems上设置标签不会导致显示任何内容。 – 2010-01-26 14:43:08

+0

2列是我可以显示的所有我想写给那些列你能解释怎么做? – Krill 2010-01-26 16:06:48

回答

1

我不知道SchemaManager是什么,所以我只是用一些Hashtable与一些虚拟数据来获得一些字典条目的枚举器。下面的示例代码使用常规的WPF列表视图和两列没有格式的列来保持简单。

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; } 
    } 
}