UWP:滚动ListView以关注项目
我的应用程序中有两个列表视图,它们的布局都相同:UWP:滚动ListView以关注项目,uwp,Uwp,我的应用程序中有两个列表视图,它们的布局都相同: <ListView x:Name="TextContent" SelectionChanged="LineSelected"> <ListView.ItemTemplate> <DataTemplate x:DataType="models:TextLine>
<ListView x:Name="TextContent"
SelectionChanged="LineSelected">
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:TextLine>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Height="16"
Style="{ThemeResource CaptionTextBlockStyle}"
Text="{Binding LineNumber}"/>
<TextBlock Grid.Column="1"
Height="16"
Style="{ThemeResource CaptionTextBlockStyle}"
Text="{Binding Text}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我尝试了以下方法:
- ListView.ScrollIntoView未执行任何操作。。。我传递了一项作为参数
- 从ListView的可视化树中获取ScrollViewer,并尝试更改视图,但也不起作用
问题是:如果我在ListView A中选择项目X,那么我想在ListView B中选择项目X并自动滚动到它。这可能吗?您是否尝试将datatemplates数据类型设置为要放入listview的对象的类型?或者listview的datacontext?我添加了它,但没有更改。仍然无法滚动。Hello@Christoff,您是否覆盖了您提供的
TextLine
类型中的Equal
方法?当使用ListView.ScrollIntoView()
方法时,代码将使用比较器来比较传入的参数。我现在已经这样做了(用该代码更新了帖子),但它没有解决问题。Hello@Christoff,你能提供一个最小的可复制演示吗?我只是测试了现有的代码,它工作得很好。
namespace MyApp.Models
{
internal class TextLine
{
public int LineNumber { get; set; }
public string Text { get; set; }
public override bool Equals(object obj)
{
var other = obj as TextLine;
return
this.LineNumber == other.LineNumber &&
this.Text.Equals(other.Text);
}
public override int GetHashCode()
{
return this.LineNumber.GetHashCode() ^ this.Text.GetHashCode();
}
}
}