0
事件我建立基於代碼here過濾器是不是在icollectionview
我已經轉換代碼VB.Net在WPF中filteredComboBox,因爲這是該項目使用。正在使用的代碼有一個調用來在屬性中添加一個處理程序,但它不起作用。我很久沒有做過這種風格的代碼,而且有點迷路。任何想法可能在這裏嘗試解決這個問題?
這是C#
protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
{
if (newValue != null)
{
ICollectionView view = CollectionViewSource.GetDefaultView(newValue);
view.Filter += this.FilterPredicate;
}
if (oldValue != null)
{
ICollectionView view = CollectionViewSource.GetDefaultView(oldValue);
view.Filter -= this.FilterPredicate;
}
base.OnItemsSourceChanged(oldValue, newValue);
}
原始分段這是轉換的VB
<summary>
Keep the filter if the ItemsSource is explicitly changed.
</summary>
<param name="oldValue">The previous value of the filter.</param>
<param name="newValue">The current value of the filter.</param>
Protected Overrides Sub OnItemsSourceChanged(oldValue As IEnumerable, newValue As IEnumerable)
If newValue IsNot Nothing Then
'Dim view As ICollectionView = CollectionViewSource.GetDefaultView(newValue)
' AddHandler view.Filter, AddressOf Me.FilterPredicate
AddHandler CollectionViewSource.GetDefaultView(newValue).Filter, AddressOf Me.FilterPredicate
End If
If oldValue IsNot Nothing Then
Dim view As ICollectionView = CollectionViewSource.GetDefaultView(oldValue)
RemoveHandler view.Filter, AddressOf Me.FilterPredicate
End If
MyBase.OnItemsSourceChanged(oldValue, newValue)
End Sub
錯誤是「過濾器不是 'System.ComponentModel.ICollectionView' 的事件。
這不是一個事件,這是一個性質。問題的哪一部分與c#有關? –
我知道這是一個屬性,我正在重新使用示例代碼,它的目標是工作,並且最初是用c#編寫的(請參閱它的完整代碼的鏈接) –
轉換錯誤的代碼不會產生良好的代碼。如果你知道這是一個屬性,然後按照它的意圖使用它。 – OneFineDay