後,我有一個開發快遞(MVVM)複選框 - 列表框編輯(與卡利微型),允許多個選擇,我試圖搜索功能附加到,這是工作如預期的那樣,但是當我選擇了項目,然後搜索時,先前選擇的項目將會丟失。我的繼承人XAML:保持選定項目重繪箱
<layout:LayoutItem Label="label : " Foreground="White" LabelPosition="Top">
<DockPanel>
<TextBox Text="{Binding Path=SeachItems, UpdateSourceTrigger=PropertyChanged}" DockPanel.Dock="Top" Width="400">
</TextBox>
<dxe:ListBoxEdit DockPanel.Dock="Bottom" Foreground="Black" Margin="10" Width="400" DisplayMember="Name" MaxHeight="200" MinHeight="200" ItemsSource="{Binding Path=Items}" EditValue="{Binding Path=SelectedItems}" SelectionMode="Multiple" >
<dxe:ListBoxEdit.StyleSettings>
<dxe:CheckedListBoxEditStyleSettings />
</dxe:ListBoxEdit.StyleSettings>
</dxe:ListBoxEdit>
</DockPanel>
</layout:LayoutItem>
列表框(我想這可能是我的問題的一部分,因爲我不能想出一個辦法,以我的選擇綁定到ObservableCollection
,我只能seemt綁定的聲明他們一個泛型列表):
public ObservableCollection<Items> Items { get; set; }
public List<object> SelectedItems { get; set; }
這裏是我的搜索方法:
private string _searchItems;
public string SeachItems
{
get { return _searchItems; }
set
{
_searchItems = value;
var tempItems = SelectedItems;
var items = //fetch all items from collection;
Items = (from p in items where p.Name.ToLower().StartsWith(SeachItems.ToLower()) orderby p.Name select p).ToObservableCollection();
NotifyOfPropertyChange(()=>Items);
SelectedItems = tempItems;
NotifyOfPropertyChange(()=>SelectedItems);
}
}
雖然SelectedItems
在調用確實有計,在查看實際列表框時,沒有項目被選中,並且下一個搜索清除了SelectedItems
任何指針?
編輯:
在設置模式,我填充Items
和SelectedItems
Items = //populate observable collection from database
SelectedItems = new List<object>();
您應該使用視圖來進行篩選,而不是實際替換項目集合。目前還不清楚你聲明的Items屬性是什麼,但如果這是ListBoxEdit屬性,那麼將對象的Items屬性綁定到它自己的ItemsSource屬性是很奇怪的。您發佈的代碼中有很多提示「做錯了」,但沒有[一個很好的,_minimal_,_complete_代碼示例](http://stackoverflow.com/help/mcve)來說明您的問題,這不是真的可能提供具體的建議。 – 2015-02-10 03:35:58
@PeterDuniho從我的設置模型中添加了基本代碼,說實話,這可能是我做錯了,這就是爲什麼我張貼在這裏,尋求幫助。 – Typhomism 2015-02-10 03:41:38