我绑定到listview
但是当我第一次绑定时,不会显示第一个项目。它在列表中,如果我点击我知道应该在哪里(在顶部)我可以使用该数据,所以唯一的问题是显示它。请注意,问题仅在第一次绑定列表时才会出现。
从下面的代码中可以看出,我绑定了输入的第三个字符的listview
,这是我遇到问题的时候。输入第四个后,将显示所有匹配结果,如果我删除第三个字符(因此没有任何约束),则重新输入一个字符,列表显示所有匹配结果。
<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;
}
}
我能找到的与此问题类似的唯一帖子是this,但接受的答案对我不起作用。
为什么我的问题发生了,如何解决?
答案 0 :(得分:0)
可能是necropost。但是,我还是留在这里。
我在WinRT应用上遇到了同样的问题。 我和你曾经绑定到父容器的宽度。然后我删除了这个绑定,并显示了第一个项目。 尝试从DataTemplate中的网格中删除它:
Width="{Binding ElementName=lvFilteredSuppliers, Path=ActualWidth}"