Привязать HashTable к ListView в WPF - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть хеш-таблица, и я хочу связать ее с ListView в wpf в коде или коде позади.

Мой ListView имеет значение

  <ListView Canvas.Left="1045" Canvas.Top="634" Height="244" Name="lvContact" Width="536" >
            <ListView.View>
                <GridView x:Name="gvContacts">
                    <GridView.Columns>
                        <GridViewColumn Width="200" x:Name="ContactName" DisplayMemberBinding="{Binding Path=Username}"></GridViewColumn>
                    </GridView.Columns>
                </GridView>

            </ListView.View>

        </ListView>

В коде ниже у меня естьпонятия не имею, как его связать, но прежде чем я использовал это в приложении Windows Forms

        //foreach (DictionaryEntry de in contactList)
        //{
        //    ListViewItem contactItem = new ListViewItem(de.Key.ToString());

        //    if (de.Value.ToString() == "NLN")
        //    {
        //        contactItem.ForeColor = System.Drawing.Color.Green;
        //    }
        //    else
        //    {
        //        contactItem.ForeColor = System.Drawing.Color.Gray;
        //    }


        //    lvContact.Items.Add(contactItem);

    //}

Но теперь это не работает должным образом, пожалуйста, помогите

1 Ответ

1 голос
/ 06 декабря 2011

Вам просто не хватает стандартной привязки.Вот XAML для ListBox:

        <ListBox DockPanel.Dock="Bottom" ItemsSource="{Binding Applications}" DisplayMemberPath="Name"
                 SelectedItem="{Binding SelectedApplication}" Height="auto"/>

А вот XAML для DataGrid:

        <DataGrid Height="280" AutoGenerateColumns="False" IsReadOnly="True" HeadersVisibility="Column"
              ItemsSource="{Binding SelectedApplication.Tasks}"
              SelectedItem="{Binding SelectedTask}">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Path=Sequence}" Header="Order" Width="50" />
                <DataGridTextColumn Binding="{Binding Path=Description}" Header="Description" Width="*"/>
                <DataGridTextColumn Binding="{Binding Path=TaskType}" Header="Type" Width="120"/>
                <DataGridTextColumn Binding="{Binding Path=FailureCausesAllStop}" Header="Stop" Width="50"/>
            </DataGrid.Columns>
        </DataGrid>

В вашей модели представления (или коде позади) вам нужен источникданные:

    public Collection<Application> Applications
    {
        get { return this._applications; }

        private set
        {
            this._applications = value;
            this.NotifyPropertyChanged(() => this.Applications);
        }
    }

И:

    public Application SelectedApplication
    {
        get { return this._selectedApplication; }

        set
        {
            this._selectedApplication = value;
            this.NotifyPropertyChanged(() => this.SelectedApplication);
        }
    }

Просто гуглите или читайте о привязке, и все будет готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...