C#如何在winrt上的gridview中将单个选择绑定到多个选择?
我今天来找你们是因为我不知道如何在gridview中进行多选择绑定。今天我知道如何做一个单选并得到结果,但我不知道如何做多选。你有什么想法吗 这是我的代码:C#如何在winrt上的gridview中将单个选择绑定到多个选择?,c#,data-binding,windows-8,windows-runtime,multi-select,C#,Data Binding,Windows 8,Windows Runtime,Multi Select,我今天来找你们是因为我不知道如何在gridview中进行多选择绑定。今天我知道如何做一个单选并得到结果,但我不知道如何做多选。你有什么想法吗 这是我的代码: public sealed partial class Base1 : ApplicationName.Common.LayoutAwarePage, INotifyPropertyChanged { private ObservableCollection<Base> projects; public Ob
public sealed partial class Base1 : ApplicationName.Common.LayoutAwarePage, INotifyPropertyChanged
{
private ObservableCollection<Base> projects;
public ObservableCollection<Base> Projects
{
get { return projects; }
set
{
projects = value;
NotifyPropertyChanged();
}
}
private Base selectedProject;
public Base SelectedProject
{
get {
return selectedProject;
}
set {
selectedProject = value;
NotifyPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyname = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
}
}
public sealed分部类Base1:ApplicationName.Common.LayoutAwarePage,INotifyPropertyChanged
{
私人收集项目;
公共收集项目
{
获取{return projects;}
设置
{
项目=价值;
NotifyPropertyChanged();
}
}
私人基地选择项目;
公共基地选择项目
{
得到{
返回所选项目;
}
设置{
selectedProject=值;
NotifyPropertyChanged();
}
}
公共事件属性更改事件处理程序属性更改;
私有void NotifyPropertyChanged([CallerMemberName]字符串propertyname=”“)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(propertyname));
}
}
在Base1的构造函数中:
this.SelectedProjects = new ObservableCollection<Base>();
this.SelectedProjects=newobservedcollection();
并添加属性:
private ObservableCollection<Base> selectedProjects;
public ObservableCollection<Base> SelectedProjects
{
get {
return selectedProjects;
}
set {
selectedProjects = value;
NotifyPropertyChanged();
}
}
private observeCollection selected项目;
公共可观测集合选定项目
{
得到{
返回选定的项目;
}
设置{
所选项目=价值;
NotifyPropertyChanged();
}
}
并将gridview的数据绑定到SelectedProject。您不能直接将数据绑定到SelectedItems属性,因为它是只读的(我想我们在这里讨论的是wpf)。 但是,您可以在基类中实现IsSelected属性,然后将其绑定到item容器的IsSelected属性
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
然后,您可以通过以下方式获取所选项目:
public IEnumerable<Base> SelectedProjects
{
get { return Projects.Where(x => x.IsSelected);}
}
public IEnumerable selected项目
{
获取{return Projects.Where(x=>x.IsSelected);}
}
在WinRT XAML工具包中有一个附加的行为,您可以尝试。的示例显示了如何使用它。只需将GridViewExtensions.BindableSelection
绑定到ObservableCollection
上,它们应该保持同步。我尝试了很多方法,但最终发现了一些非常易于使用的方法
我只是使用GridView的“SelectedItems”。然后我在这些选择项上做了我想要的。如果有人想要更多信息,我会给出
谢谢很多帮助我的人:)我两个都会试试,我告诉过你。谢谢。我真的不明白我需要把“this.SelectedProjects=newobservedcollection();”放在哪里。对不起,我在c#……中是新手,在你的Base1的构造函数中是:public Base1(){this.SelectedProjects=newobservedcollection();}