Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在从选定的listview项获取id_C#_Wpf_Data Binding - Fatal编程技术网

C# 正在从选定的listview项获取id

C# 正在从选定的listview项获取id,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个包含此数据模板的列表视图: <ListView x:Name="lvRitten" Grid.Column="0" Background="Gold" ItemsSource="{Binding ObcRitten}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" SelectionChanged="lvRitten_SelectionChanged" SelectionMode="Single"> <

我有一个包含此数据模板的列表视图:

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

您可以将
SelectedItem
属性强制转换为
Rit
并访问
id
属性:

Rit rit = lvRitten.SelectedItem as Rit;
if (rit != null)
    var id = rit.id;
您还可以将其直接绑定到
TextBlock
,如下所示:

<TextBlock Text="{Binding SelectedItem.id, ElementName=lvRitten}" />

在ViewModel中创建新属性:

public Rit SelectedRit {get; set;}
然后将此属性与ListView绑定:

<ListView SelectedItem = "{Binding SelectedRit}"..../>

数据模板中的所有元素共享相同的数据上下文,即
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"/>


我是绑定新手,属性应该放在哪里?@Jeffrey在同一个类中,您的ObservableCollection在哪里我知道,但我需要列表视图之外的id,列表视图中还有更多项
<Label Content="{Binding SelectedItem.id, ElementName=lvRitten}" FontSize="10"/>