2013-05-29 35 views
1

我的日期网格由具有交易明细列表的行组成。如何通过MVVM一次在WPF中的数据网格中选择2行

1日两行包括交易数量:1个详细
第二两行包括交易数量:2个细节和继续。

所以,如果我选择交易号码:1行自动选择下一行(与Trans Num:1)。 相同规则适用于所有具有交易编号的行。

那么如何在wpf中实现这一点,使用户可以看到他已经选择了2行。我必须使用MVVM模式来实现它。

回答

0

那么告诉数据网格选择更多的一行是简单的“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> 
+0

能否请您给我提供关于如何添加行为的任何样品(在MVVM) – Ujjwal27

+0

即时通讯不知道,但也许它帮助你。祝你好运;) –

+0

和顺便说一句。如果你想在MVVM模式中实现它,最好创建一个新的类库,在这里你可以添加所有的转换器,行为等... –

相关问题