2010-01-26 90 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; } 
    } 
}