Pregunta

Lo que estoy tratando de hacer es poblar dos columnas en una ventana. Esta columna tendrá el nombre de la variable global y el camino que a ella. Estoy teniendo problemas para mostrar lo que necesito en las ventanas.

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

Esta es la ficha que tiene el área que necesito para poblar. La primera columna para el nombre y la segunda será para el camino. Puedo estar perdiendo algo así.

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

Actualmente tengo LVI celebración de las dos partes, pero voy a necesitar una parte para ir a la primera columna y la otra parte a la otra columna. No tengo la intención de mantener LVI si yo no lo necesito. De cualquier manera que necesito para obtener entry.key representada en la primera columna y entry.value en el segundo. Algunas ideas?

¿Fue útil?

Solución

No sé lo que el SchemaManager es por lo que acabo de utilizar una tabla hash con algunos datos ficticios para obtener un enumerador con algunas entradas del diccionario. A continuación código de ejemplo utiliza un listview WPF regular con dos columnas sin formato que sea sencillo.

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>

Código atrás:

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; }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top