C# xaml UWP将焦点/选择设置为第一个listview项
需要将焦点或选择设置为listview项的第一项。listview包含一个项目数组,在该数组中,焦点需要在开始时以第一个项目为目标,然后保留最后选择的项目。根据您的编码风格,这里有多个选项。看起来您正在使用事件处理程序中的代码隐藏,并使用YourCollection属性绑定到视图模型类,因此我将给出这两个示例:) 使用代码隐藏 更新XAML文件以处理加载的事件,并将ListView命名为:C# xaml UWP将焦点/选择设置为第一个listview项,c#,xaml,uwp,C#,Xaml,Uwp,需要将焦点或选择设置为listview项的第一项。listview包含一个项目数组,在该数组中,焦点需要在开始时以第一个项目为目标,然后保留最后选择的项目。根据您的编码风格,这里有多个选项。看起来您正在使用事件处理程序中的代码隐藏,并使用YourCollection属性绑定到视图模型类,因此我将给出这两个示例:) 使用代码隐藏 更新XAML文件以处理加载的事件,并将ListView命名为: <ListView x:Name="listview" ScrollViewer.Horizont
<ListView x:Name="listview" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.ZoomMode="Enabled"
ItemsSource="{Binding YourCollection}" DoubleTapped="listview_DoubleTapped" Tapped="listview_Tapped" SelectionChanged="listview_SelectionChanged"
GotFocus ="StackPanel_GotFocus" IsItemClickEnabled="True" ItemClick="ListView_ItemClick"
Margin="162,539,-103,11" Style="{StaticResource ListViewStyle1}" ScrollViewer.VerticalScrollBarVisibility="Disabled" Grid.RowSpan="2">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Height="130" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate >
<DataTemplate>
<StackPanel Orientation="Vertical" Height="130" Width="192" >
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Image}" Height="108" Width="192" HorizontalAlignment="Center" VerticalAlignment="Center" />
</StackPanel>
<StackPanel Orientation="Vertical" >
<TextBlock Text="{Binding Name}" TextAlignment="Center" Height="22" Width="192" Foreground="White" FontFamily="Assets/GothamLight.ttf#GothamLight"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
使用视图模型
在视图模型中提供SelectedItem属性(无论在何处定义集合):
private YourItem\u selectedItem=null;
公共选择项
{
获取{return\u selectedItem;}
set{SetProperty(ref _selectedItem,value);}
}
然后将ListView绑定到所选项目,就像您对项目资源所做的那样:
private YourItem_selectedItem = null;
public Dumb SelectedItem
{
get { return _selectedItem; }
set { SetProperty<YourItem>(ref _selectedItem, value); }
}
最后,只需在加载收藏项目后设置SelectedItem
此方法还可以替换SelectionChanged和ItemClick事件。您不需要它们,因为在这些情况下,默认情况下控件会更改SelectedItem。我找到了一个进一步的解决方案,它不需要加载页面的处理程序,也不需要ViewModel中的SelectedItem属性
<ListView Name="MyListView" ItemsSource="{Binding YourCollection}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
private YourItem_selectedItem = null;
public Dumb SelectedItem
{
get { return _selectedItem; }
set { SetProperty<YourItem>(ref _selectedItem, value); }
}
<ListView Name="MyListView" ItemsSource="{Binding YourCollection}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView Name="yourCollectionListView"
ItemsSource="{Binding YourCollection}"
SelectedItem="{Binding RelativeSource={RelativeSource Self}, Path=ItemSource[0]}"/>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState.StateTriggers>
<StateTrigger IsActive="{Binding YourCollection.Count, Converter={StaticResource EqualToParam}, ConverterParameter={StaticResource Zero}}"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="yourCollectionListView.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<x:Int32 x:Key="Zero">0</x:Int32>
SelectedItem="{Binding Path=[0]}"