我有一個關於Windows Phone 8工具包中的LongListMultiSelector的問題。WP8 LongListMultiSelector綁定SelectedItems
我想使用此控件在WP8(使用MVVM)中實現文件瀏覽器。由於SelectedItems屬性不可綁定,因此我使用本文中的解決方案來解決該問題。 http://dotnet-redzone.blogspot.de/2012/11/windows-phone-8longlistselector.html
這裏是我的相關代碼: XAML
<Grid DataContext="{Binding FileBrowserViewModel}">
<local:LongListMultiSelector
x:Name="FileList"
ItemsSource ="{Binding CurrentFileList}"
EnforceIsSelectionEnabled="{Binding IsInSelectionMode}"
toolkit:TiltEffect.IsTiltEnabled="True"
SelectedItems="{Binding SelectedFiles, Mode=TwoWay}"
IsSelectionEnabled="True"/>
</Grid>
我LonglistMultiSelector
public class LongListMultiSelector : Microsoft.Phone.Controls.LongListMultiSelector
{
public LongListMultiSelector()
{
SelectionChanged += LongListMultiSelector_SelectionChanged;
}
void LongListMultiSelector_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
this.SelectedItems = base.SelectedItems;
}
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register(
"SelectedItems",
typeof(object),
typeof(LongListMultiSelector),
new PropertyMetadata(null, OnSelectedItemsChanged)
);
private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var selector = (LongListMultiSelector) d;
selector.SelectedItems = e.NewValue;
}
public new object SelectedItems
{
get { return GetValue(SelectedItemsProperty); }
set { SetValue(SelectedItemsProperty, value); }
}
}
視圖模型
/// <summary>
/// The currently selected Items.
/// </summary>
public ObservableCollection<File> SelectedFiles
{
get { return _selectedFiles; }
set { Set(() => this.SelectedFiles, ref _selectedFiles, value); }
}
private ObservableCollection<File> _selectedFiles;
但是這種解決方案不起作用。 SelectedFiles屬性根本不會改變。 (_selectedFiles始終爲空)
- 編輯:Set(()=> this.SelectedFiles,ref _selectedFiles,value);來自Mvvmlight(Laurent Bugnion)包。
你試過這種的視圖模型應實現INotifyPropertyChanged,並在二傳手把NotifyPropertyChanged(「SelectedFiles」); –
我的ViewModel繼承自BaseViewModel,它從Mvvmlight包中的ObservableObject繼承。使用Set(...)方法,它應該照顧我的想法。 至少適用於其他屬性。 但我不得不承認這是我第一次使用ObservableCollection,所以也許這必須以不同的方式處理。 我會研究它,謝謝。 –
這裏似乎不是問題。我可以編輯集合和GUI更新,反之亦然。 –