Frage

Ich versuche zu tun, zwei Spalten in einem Fenster zu bevölkern. Diese Spalten haben den Namen der globalen Variablen und den Pfad. Ich habe Probleme, das anzuzeigen, was ich in den Fenstern brauche.

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

Dies ist die Registerkarte, die den Bereich enthält, den ich bevölkern muss. Die erste Spalte für den Namen und die zweite ist für den Pfad. Möglicherweise fehlt mir auch etwas.

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

Derzeit habe ich LVI in beiden Teilen, aber ich brauche einen Teil, um in die erste Spalte und den anderen Teil zur anderen Spalte zu gehen. Ich habe nicht vor, LVI zu behalten, wenn ich es nicht brauche. So oder so muss ich bekommen entry.key in der ersten Spalte angezeigt und entry.value in dieser Sekunde. Irgendwelche Ideen?

War es hilfreich?

Lösung

Ich weiß nicht, was der Schemamanager ist, also habe ich gerade einen Hashtable mit einigen Dummy -Daten verwendet, um einen Enumerator mit einigen Wörterbucheinträgen zu erhalten. Im Folgenden werden ein regulärer WPF -ListView mit zwei Spalten ohne Formatierung verwendet, um sie einfach zu halten.

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>

Code hinter:

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; }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top