0
我正在編寫一個程序來查看列表框中的產品信息。我有一個用於搜索的文本框,可以在按ProductName鍵入時自動篩選列表。我已經運行了很多次C#代碼,並且我可以看到過濾器實際上正在工作,但我無法通過視覺方式在屏幕上過濾或「刷新」。爲什麼列表框項目在過濾期間沒有更新?
C#代碼:
private ICollectionView _ProductInfoView;
public ICollectionView ProductInfoView
{
get{return this._ProductInfoView;}
set
{
this._ProductInfoView=value;
this.onPropertyChnage("ProductInfoView");
}
}
private void RibbonSetupProduct_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.hidePanels();
new Task(() =>
{
this.Dispatcher.Invoke(new Action(() =>
{
ObservableCollection<ModelProductInformation> productInfoCollection = new ObservableCollection<ModelProductInformation>(from ProductInfo in new GTS_ERPEntities().ProductInformations select new ModelProductInformation { ProductID = ProductInfo.ProductID, ProductName = ProductInfo.ProductName , Remark=ProductInfo.Remark});
this.ProductInfoView = CollectionViewSource.GetDefaultView(productInfoCollection);
new ProductInfoSearch(ProductInfoView, this.TestTextBox);
}
), DispatcherPriority.DataBind);
}
).Start();
this.PanelProducts.Visibility = Visibility.Visible;
}
class ProductInfoSearch
{
public ProductInfoSearch(ICollectionView filteredList, TextBox textEdit)
{
string filterText = string.Empty;
filteredList.Filter = delegate(object obj)
{
if (String.IsNullOrEmpty(filterText))
{
return true;
}
ModelProductInformation str = obj as ModelProductInformation;
if (str.ProductName==null)
{
return true;
}
if (str.ProductName.ToUpper().Contains(filterText.ToUpper()))
{
return true;
}
else
{
return false;
}
};
textEdit.TextChanged += delegate
{
filterText = textEdit.Text;
filteredList.Refresh();
};
}
}
XAML:
<dxe:ListBoxEdit x:Name="ProductInfoList" Margin="1.666,1,8,8" Grid.Column="2" Grid.Row="2" Grid.RowSpan="5" DisplayMember="ProductName" DataContext="{Binding ProductInfoView, ElementName=window}" ItemsSource="{Binding}"/>
我想我的問題是,無論是數據綁定或內部任務()。
我刪除任務的東西,但它仍然不working.Please有任何其他的解決方案。 –
您是否嘗試過一次實例化並將productInfoCollection作爲類成員?我在過去使用ICollection的局部變量時遇到了一些問題,就像您對productInfoCollection使用 – blindmeis
我解決了我的問題。問題出現在列表框中。我使用了Developer Express ListBoxEdit。這不是工作。我不知道爲什麼。現在我使用ListBox並且工作正常,您的答案也是正確的。謝謝。 –