gpt4 book ai didi

c# - WP8 LongListMultiSelector 绑定(bind) SelectedItems

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:49 24 4
gpt4 key购买 nike

我对 Windows Phone 8 工具包中的 LongListMultiSelector 有疑问。

我想用这个控件在WP8(使用MVVM)中实现一个文件浏览器。由于 SelectedItems 属性不可绑定(bind),我使用本文中的解决方案来解决该问题。 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) 包。

最佳答案

我通过使用普通的 LongListSelector 并为其中的每个 Item 赋予一个 Boolean IsSelected 来解决我的问题。

DataTemplate 然后有一个看起来像这样的复选框:

<CheckBox IsChecked="{Binding IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}"/>

关于c# - WP8 LongListMultiSelector 绑定(bind) SelectedItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com