第一次绑定时,Windows 8列表视图第一项不显示
本文关键字:一项 显示 视图 定时 绑定 Windows 列表 第一次 | 更新日期: 2023-09-27 18:05:38
我绑定到一个listview
,但是当我第一次绑定时,第一个项目没有显示。它在列表中,如果我点击我知道它应该在哪里(在顶部),我可以使用该数据,所以唯一的问题是显示它。请注意,此问题仅在第一次绑定列表时出现。
从下面的代码中可以看到,我在输入的第三个字符上绑定了listview
,这就是我遇到问题的时候。一旦输入第四个字符,所有匹配结果都显示出来,如果我删除第三个字符(因此没有绑定任何内容),然后重新输入a字符,列表将显示所有匹配结果。
<TextBox x:Name="txtSupName" SelectionChanged="txtSupName_SelectionChanged" Style="{StaticResource DefaultTextbox}"/>
<ListView x:Name="lvFilteredSuppliers" Margin="0,50,0,0" Height="200" SelectionChanged="lvFilteredSuppliers_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ElementName=lvFilteredSuppliers, Path=ActualWidth}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="410" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding SupplierName}" />
<TextBlock Grid.Column="1" Text="{Binding SupplierCode}" />
<TextBlock Grid.Column="2" Text="{Binding SupplierTown}" />
<TextBlock Grid.Column="3" Text="{Binding SupplierCountry}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
private void txtSupName_SelectionChanged(object sender, RoutedEventArgs e)
{
//only start checking when there are more than 2 charaters entered
if (txtSupName.Text.Length > 2)
{
//select all suppliers that match with user input
var filteredSuppliers = Suppliers.Where(l => l.SupplierName.ToLower().StartsWith(txtSupName.Text.ToLower()));
//filteredSuppliers passed to observable collection so listView will update on each change
ObservableCollection<SupplierLocal> filteredSuppliersCollection = new ObservableCollection<SupplierLocal>(filteredSuppliers);
//sets the source for the listview
lvFilteredSuppliers.ItemsSource = filteredSuppliersCollection;
//shows grid
gridListViewContainer.Visibility = Visibility.Visible;
}
else
{
//hides grid
gridListViewContainer.Visibility = Visibility.Collapsed;
}
}
我能找到的唯一一个类似这个问题的帖子是这个,但公认的答案不适合我。
为什么我的问题发生了,我如何解决它?
可能是尸岗。但是,我还是把它留在这里。
我在WinRT应用程序上有同样的问题。我和你一样习惯于绑定父容器的宽度。然后我删除这个绑定,显示第一个项目。尝试从DataTemplate内的网格中删除它:
Width="{Binding ElementName=lvFilteredSuppliers, Path=ActualWidth}"