2010-01-26 3 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을 가지고 있지만 나는 첫 번째 열에 다른 열에 다른 부분으로 이동 한 부분이 필요합니다. 내가 그것을 필요로하지 않는다면 나는 lvi를 지키려고하지 않는다. 어느 쪽이든 나는 entry.key 첫 번째 열에 표시하고 entry.value 두 번째에 표시해야합니다. 어떤 아이디어?

+0

사람이 더 이상 정보를 바로 알려해야하는 경우, 난 내가 비록 관련 무엇인지 추가 그러나 나는 모든 이것에 대해 잘 모른다 그래서 그것은 단지 가정이었습니다. – Krill

+1

일반 listview에 두 개의 열을 표시하는 코드를 제공 할 수 있습니다. 작동하지 않을 수도있는 독점적 인 TreeListView를 사용하기 때문에 코드에 어떤 문제가 있는지 알기가 어렵습니다. 하지만 당신의 코드를 살펴봄으로써 나는 두 가지 잠재적 인 문제점을 보았다. 먼저, CellTemplates에 대해 datatemplates를 사용하는 경우 ListViewItems을 사용하지 않고 데이터 바인딩을 사용하려고합니다. ListViewItems에 태그를 설정해도 아무 것도 표시되지 않습니다. –

+0

2 개의 열은 모두 표시 할 수 있습니다. 어떻게 그 열을 설명하고 싶습니까? – Krill

답변

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; } 
    } 
} 
관련 문제