Привязка текста метки к индексу в списке XAML

Вот схема одного из способов переноса данных. Работа с этим примером будет поучительной, потому что вам нужно будет использовать CPAN , вы узнаете о полезных List::Util и List::MoreUtils модулях , вы узнаете основы сложных структур данных (см. perlreftut , perldsc и perllol ), и вы сможете использовать итератор в Perl.

use strict;
use warnings;
use List::MoreUtils qw(each_arrayref);

my @raw_data = (
    '0 1 2 3 4 5 6 7 8 9 10',
    '6 7 3 6 9 3 1 5 2 4 6',
);

my @rows = ... ; # Look up map() and split() to fill in the rest.
                 # You want an array of arrays.

my @transposed;  # You will build this in the loop below.

my $iter = each_arrayref(@rows);  # See List::MoreUtils documentation.

while ( my @tuple = $iter->() ){
    # Do stuff here to build up @transposed, which
    # will also be an array of arrays.
}

0
задан Jarf 19 March 2019 в 23:21
поделиться

2 ответа

вы можете использовать [] в путях привязки для ссылки на индекс

в вашем коде

//you can only bind to public properties
public List<Person> People { get; set; }

в вашем XAML

<Label Text="{Binding People[10].Name}" />
0
ответ дан Jason 19 March 2019 в 23:21
поделиться

Есть несколько способов сделать это.

Одним из способов может быть создание комбинированного списка и назначение списка как ItemsSource. Затем вы можете сделать некоторые метки и ввести и назначить выбранного человека в поле со списком как DataContext для окна.

Скажем, например, что это XAML:

        <ComboBox x:Name="personCombobox" HorizontalAlignment="Left" SelectionChanged="personCombobox_OnSelectionChanged">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding FirstName, Mode=OneWay}" />
                        <TextBlock Text=" - " />
                        <TextBlock Text="{Binding LastName, Mode=OneWay}" />
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
        <Label Content="{Binding FirstName, Mode=OneWay}"/>
        <Label Content="{Binding LastName, Mode=OneWay}" />

И тогда код будет выглядеть примерно так:

public MainWindow()
        {
            InitializeComponent();

            personCombobox.ItemsSource = personRepository.GetAll();
            personCombobox.SelectedIndex = 0;

        }

 private void personCombobox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            if (personCombobox.SelectedIndex != -1)
            {
                this.DataContext = (Person)personCombobox.Items.GetItemAt(personCombobox.SelectedIndex);
            }
        }  
0
ответ дан Ian 19 March 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: