سؤال

ما أحاول القيام به هو ملء عمودين في نافذة. سيكون لهذا الأعمدة اسم المتغير العالمي والمسار إليه. أواجه مشاكل في عرض ما أحتاجه في النوافذ.

        <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 في الثانية. أيه أفكار؟

هل كانت مفيدة؟

المحلول

لا أعرف ما هو Schemamanager ، لذا فقد استخدمت للتو علامة تجزئة مع بعض البيانات الوهمية للحصول على العداد مع بعض إدخالات القاموس. يستخدم رمز العينة أدناه عرض 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; }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top