C#如何在winrt上的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

我今天来找你们是因为我不知道如何在gridview中进行多选择绑定。今天我知道如何做一个单选并得到结果,但我不知道如何做多选。你有什么想法吗

这是我的代码:

  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();}