![](/img/trans.png)
[英]How can I binding the SelectedItems property of a DataGrid in MVVM?
[英]Binding Selecteditems Datagrid
因此,在WPF上,我启用了右键单击功能。 如果右键单击数据网格中的人员,则可以选择email
,它将通过电子邮件发送该人员。 但是,现在我想通过提供Multiple select
选项来改进它。 我想知道我的装订有什么问题还是我采用了错误的装订方法。
Single / SelectedItem的代码
public void SendEmail()
{
var vm = new EmailViewModel(Events);
vm.ByIt(SelectedItem.Id);
}
}
xaml侧:绑定SelectedItem
<telerik:RadGridView ItemsSource="{Binding Items, IsAsync=True}" SelectedItem="{Binding SelectedItem}">
<telerik:RadGridView.ContextMenu>
<ContextMenu>
<MenuItem Header="Email" cal:Message.Attach="[Click] = [SendEmail()]"/>
</ContextMenu>
</telerik:RadGridView.ContextMenu>
哪个有效! 这是我下面尝试Upgrade
到多选绑定的尝试
<telerik:RadGridView.ItemContainerStyle>
<Style TargetType="{x:Type telerik:GridViewRow}">
<Setter Property="IsSelected" Value="{Binding Mode=OneWayToSource, Path=SelectYN}"></Setter>
</Style>
</telerik:RadGridView.ItemContainerStyle>
private BindableCollection<PersonDTO> selectYN;
public BindableCollection<PersonDTO> SelectYN
{
get { return selectYN; }
set
{
if (value != selectYN)
{
selectYN = value;
NotifyOfPropertyChange(() => SelectYN);
}
}
}
public void SendEmail()
{
foreach (PersonDTO value in SelectYN)
{
var vm = new EmailViewModel(Events);
vm.ById(value.Id);
Events.PublishOnUIThread(new ShowTabEvent(vm));
}
}
假设您的RadGridView
在ListView
,则需要一个IList
属性以将数据绑定到ListView.SelectedItems
属性。
private IList selectYN;
public IList SelectYN
{
get { return selectYN; }
set
{
if (value != selectYN)
{
selectYN = value;
NotifyOfPropertyChange(() => SelectYN);
}
}
}
...
<ListView ItemSource="{Binding Items}" SelectedItems="{Binding SelectYN}" ... />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.