Получение идентификатора из выбранного элемента списка - PullRequest
0 голосов
/ 05 июня 2018

У меня есть ListView, содержащий этот шаблон данных:

<ListView x:Name="lvRitten" Grid.Column="0" Background="Gold" ItemsSource="{Binding ObcRitten}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" SelectionChanged="lvRitten_SelectionChanged" SelectionMode="Single">
    <ListView.ItemTemplate>
        <DataTemplate DataType="{x:Type classes:Rit}">
            <Button x:Name="btnride" Height="100" Width="132" >
                <StackPanel>
                    <Grid Height="100" Width="132">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="1*"/>
                            <RowDefinition Height="3*"/>
                        </Grid.RowDefinitions>
                        <Grid Grid.Row="0" Grid.ColumnSpan="2" Background="Aquamarine">
                            <Label Content="naam"/>
                        </Grid>
                        <Grid Grid.Column="0" Grid.Row="1" Background="AntiqueWhite">
                            <StackPanel>
                                <Label Content="{Binding id}" FontSize="10"/>
                                <Label Content="{Binding Naam}" FontSize="10"/>
                                <Label Content="{Binding AantalPassagiers}" FontSize="10"/>
                                <Label Content="{Binding TaxiNummer}" FontSize="10"/>
                            </StackPanel>
                        </Grid>
                        <Grid Grid.Column="1" Grid.Row="1">

                        </Grid>
                    </Grid>
                </StackPanel>
            </Button>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

, но теперь я хочу получить id, который находится в первой метке в 3-й сетке, когда я нажимаю на ListViewItem.

Какой самый простой способ получить идентификатор?

Можно ли использовать привязку для привязки идентификатора к другой метке?Или мне нужно сделать что-то еще?

ObcRitten является общедоступной коллекцией ObservableCollection и заполнен примером Rit Rit

Rit rit1 = new Rit
{
    id = 20,
    AantalPassagiers = 5,
    Naam = "Jan",
    TaxiNummer = 1
};

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Создайте новое свойство в вашей ViewModel:

public Rit SelectedRit {get; set;}

Затем свяжите это свойство с ListView:

<ListView SelectedItem = "{Binding SelectedRit}"..../>
0 голосов
/ 05 июня 2018

все элементы внутри DataTemplate совместно используют один и тот же DataContext, а именно Rit элемент.Чтобы отобразить id дважды в разных местах, необходимо создать две метки и связать обе с id

<Grid Grid.Column="1" Grid.Row="1">
     <Label Content="{Binding id}" FontSize="10"/>
</Grid>

вне ListView, привязать к ListView.SelectedItem:

<Label Content="{Binding SelectedItem.id, ElementName=lvRitten}" FontSize="10"/>
0 голосов
/ 05 июня 2018

Вы можете преобразовать свойство SelectedItem в Rit и получить доступ к свойству id:

Rit rit = lvRitten.SelectedItem as Rit;
if (rit != null)
    var id = rit.id;

Вы также можете привязать его непосредственно к TextBlock следующим образом:

<TextBlock Text="{Binding SelectedItem.id, ElementName=lvRitten}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...