Mam listView zawierający ten szablon danych:

<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>

Ale teraz chcę uzyskać id, to w pierwszej etykiecie w 3 sirze, gdy kliknął na listViewitem.

Jaki jest najłatwiejszy sposób, aby uzyskać identyfikator?

Czy mogę użyć wiązania, aby wiązać identyfikator do innej etykiety? Czy muszę zrobić coś innego?

Obcitittiter jest publicznym pomieszczeniemCollection i jest wypełniony przykładem rit

Rit rit1 = new Rit
{
    id = 20,
    AantalPassagiers = 5,
    Naam = "Jan",
    TaxiNummer = 1
};
0
Jeffrey 5 czerwiec 2018, 13:50

3 odpowiedzi

Najlepsza odpowiedź

Wszystkie elementy wewnątrz DataTemplate Udostępniają ten sam DataContext, a mianowicie Rit element. Aby wyświetlić id dwa razy w różnych miejscach, musisz utworzyć dwie etykiety i wiązać zarówno do id

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

Poza ListView Bind To ListView.SelectecesM:

<Label Content="{Binding SelectedItem.id, ElementName=lvRitten}" FontSize="10"/>
0
ASh 5 czerwiec 2018, 11:27

Utwórz nową właściwość w swoim ViewModel:

public Rit SelectedRit {get; set;}

Następnie wiążą tę nieruchomość za pomocą ListView:

<ListView SelectedItem = "{Binding SelectedRit}"..../>
0
0x00x 5 czerwiec 2018, 11:02

Możesz rzucić nieruchomość SelectedItem do Rit i uzyskaj dostęp do nieruchomości id:

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

Możesz także wiązać go bezpośrednio do TextBlock w ten sposób:

<TextBlock Text="{Binding SelectedItem.id, ElementName=lvRitten}" />
0
mm8 5 czerwiec 2018, 14:19