默认情况下,选择ListView中的第一项MVVM、C#

默认情况下,选择ListView中的第一项MVVM、C#,c#,wpf,xaml,listview,mvvm,C#,Wpf,Xaml,Listview,Mvvm,我正在写一些程序,在那里可以选择设备,然后再配置它。我实现了列出所有设备的ListView。我喜欢默认选择第一个设备。怎么做?我尝试了在StackOverflow和Google上找到的几种解决方案,但运气不好 以下是我在XAML中的代码: <ListView Name="lvdevices" Grid.Row="1" Margin="2" ItemsSource="{Binding devicelist}" SelectionMode="Single" SelectedItem="{Bin

我正在写一些程序,在那里可以选择设备,然后再配置它。我实现了列出所有设备的ListView。我喜欢默认选择第一个设备。怎么做?我尝试了在StackOverflow和Google上找到的几种解决方案,但运气不好

以下是我在XAML中的代码:

<ListView Name="lvdevices" Grid.Row="1" Margin="2" ItemsSource="{Binding devicelist}" SelectionMode="Single" SelectedItem="{Binding SelectedDevice}" DataContext="{Binding }">
       <ListView.View>
                <GridView x:Name="gridDevices">
                    <GridViewColumn>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox Tag="{Binding ID}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn x:Name="DeviceId" Header="DeviceId" DisplayMemberBinding="{Binding DeviceId}" Width="50"/>
                    <GridViewColumn x:Name="NameId" Header="NameId" DisplayMemberBinding="{Binding NameId}" Width="100"/>
                    <GridViewColumn x:Name="ManufacturerId" Header="ManufacturerId" DisplayMemberBinding="{Binding ManufacturerId}" Width="150"/>
               </GridView>
      </ListView.View>
</ListView>


我不知道如何实现连接时默认选择第一项。也有可能找不到任何设备,然后呢?请帮忙!如果有问题,请提问。

当您填写
设备列表时,您可以将
所选设备设置为设备列表中的第一项,或者如果列表中没有任何内容,则将
设置为空

using System.Linq;

...

SelectedDevice = devicelist.FirstOrDefault();

假设
SelectedDevice
实现了
INotifyPropertyChanged
,那么就应该选择视图中的第一项。

在ViewModel中,您只需要将
SelectedDevice
设置为第一项(当然还需要触发一个
OnPropertyChanged