如何通过MVVM在WPF的数据网格中一次选择2行
“我的日期”网格由带有事务详细信息列表的行组成 第一行和第二行包括交易编号:1详细信息如何通过MVVM在WPF的数据网格中一次选择2行,wpf,mvvm,wpf-controls,Wpf,Mvvm,Wpf Controls,“我的日期”网格由带有事务详细信息列表的行组成 第一行和第二行包括交易编号:1详细信息 第二行包括交易编号:2详细信息并继续 所以,如果我自动选择事务编号:1行,将选择下一行(事务编号:1)。 相同的规则适用于具有事务编号的所有行 所以,如何在wpf中实现这一点,以使用户看到他选择了2行。我必须使用MVVM模式来实现它。告诉数据网格选择多个行很简单,“SelectionMode=Extended”。但是我认为您需要添加一个行为来自动选择第二行。类似这样的东西(大多数是硬编码的,因此可能无法完美工
第二行包括交易编号:2详细信息并继续 所以,如果我自动选择事务编号:1行,将选择下一行(事务编号:1)。 相同的规则适用于具有事务编号的所有行
所以,如何在wpf中实现这一点,以使用户看到他选择了2行。我必须使用MVVM模式来实现它。告诉数据网格选择多个行很简单,“SelectionMode=Extended”。但是我认为您需要添加一个行为来自动选择第二行。类似这样的东西(大多数是硬编码的,因此可能无法完美工作;) 创建一个新类并将其命名为DataGridSelectMulti.cs
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Text;
namespace DataGridSelectMulti
{
public class DataGridSelectMulti: CommandBehaviorBase<DataGrid>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.SelectionChanged += new SelectionChangedEventHandler(AssociatedObject_SelectionChanged);
}
void AssociatedObject_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (sender is DataGrid)
{
DataGrid grid = (sender as DataGrid);
if (grid.SelectedItem != null)
{
grid.UpdateLayout();
//TODO
// Something like grid.SelectedItems = List
}
}
}
protected override void OnDetaching()
{
base.OnDetaching();
this.AssociatedObject.SelectionChanged -= new SelectionChangedEventHandler(AssociatedObject_SelectionChanged);
}
}
XAML
<Grid>
<DataGrid name='' Selcted...>
<i:Interaction.Behaviors>
<my1:DataGridSelectMulti/>
</i:Interaction.Behaviors>
<DataGrid .Columns />
</DataGrid >
</Grid>
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Input;
使用系统文本;
命名空间DataGridSelectMulti
{
公共类DataGridSelectMulti:CommandBehaviorBase
{
受保护的覆盖无效附加()
{
base.onatached();
this.AssociatedObject.SelectionChanged+=新的SelectionChangedEventHandler(AssociatedObject\u SelectionChanged);
}
无效关联对象\u选择已更改(对象发送者,选择已更改数据源e)
{
如果(发送方是DataGrid)
{
DataGrid=(发送方为DataGrid);
如果(grid.SelectedItem!=null)
{
grid.UpdateLayout();
//待办事项
//类似于grid.SelectedItems=List的内容
}
}
}
附加时受保护的覆盖无效()
{
base.OnDetaching();
this.AssociatedObject.SelectionChanged-=新的SelectionChangedEventHandler(AssociatedObject\u SelectionChanged);
}
}
XAML
你能给我提供一些关于如何添加行为(在MVVM中)的示例吗?顺便说一句,如果你想在MVVM模式中实现它,最好创建一个新的类库,在那里你可以添加所有的转换器、行为等等。。。