C #: навигация по списку <Customer>с привязанными к данным текстовыми полями - PullRequest
2 голосов
/ 12 июня 2011

После нескольких часов попыток меня сильно смутили сложные концепции связывания данных wpf: - /

Какой самый простой способ показать свойства моих бизнес-объектов (например, Имя, Улица ...)в нескольких текстовых полях?

Цель:

  • Пользователь может перемещаться по записям (следующий, предыдущий)
  • Двусторонняя привязка - Изменения в текстовых поляхТакже следует изменить значения основных свойств.

Я уже выяснил, как связать поля со свойствами, но как мне реализовать переход к следующей / предыдущей записи?

Заранее спасибо!

1 Ответ

2 голосов
/ 12 июня 2011

Вы захотите взглянуть на методы ICollectionView. Вот рабочий пример:

XAML:

<Window.Resources>
    <x:Array x:Key="myPeoples" Type="{x:Type local:Person}">
        <local:Person Name="Bob Marley" Address="123 street" />
        <local:Person Name="Ted Nugent" Address="456 street" />
        <local:Person Name="Ron Paul" Address="789 street" />
    </x:Array>
</Window.Resources>
<DockPanel>
    <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
        <Button x:Name="cmdPrevious" Click="cmdPrevious_Click">Previous</Button>
        <Button x:Name="cmdNext" Click="cmdNext_Click">Next</Button>
    </StackPanel>
    <Grid DockPanel.Dock="Top" DataContext="{StaticResource myPeoples}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBox Grid.Column="0" Text="{Binding Path=Name}" />
        <TextBox Grid.Column="1" Text="{Binding Path=Address}" />
    </Grid>
</DockPanel>

код позади:

private void cmdPrevious_Click(object sender, RoutedEventArgs e)
{
    Person[] peoples = this.FindResource("myPeoples") as Person[];
    System.ComponentModel.ICollectionView collectionView = CollectionViewSource.GetDefaultView(peoples);
    collectionView.MoveCurrentToPrevious();

}

private void cmdNext_Click(object sender, RoutedEventArgs e)
{
    Person[] peoples = this.FindResource("myPeoples") as Person[];
    System.ComponentModel.ICollectionView collectionView = CollectionViewSource.GetDefaultView(peoples);
    collectionView.MoveCurrentToNext();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...