2012-08-15 78 views
0

我用三行定义了一个初始表。如果用户选择一行并单击“开始新表”按钮,它将用新表打开一个新的tabItem。 问题是,我不知道如何选择我的DataGrid中的整个行。在DataGrid中选择一行

C# Code: 
//this my initial Table 
private ObservableCollection<TableDataRowStringItem> tableobject = new ObservableCollection<TableDataRowStringItem>(); 
List<TableDataRowStringItem> rowstringList = new List<TableDataRowStringItem>(); 
TableDataRowStringItem item = new TableDataRowStringItem(); 
item.RowNumber = 1; item.saveFlag = true; item.ObjectType = "E"; item.Name = "E"; item.PredecessorRowNumber = "0"; 
rowstringList.Add(item); 
item = new TableDataRowStringItem(); 
item.RowNumber = 2; item.ObjectType = "Function"; item.Name = "Function"; item.PredecessorRowNumber = "1"; 
rowstringList.Add(item); 
item = new TableDataRowStringItem(); 
item.RowNumber = 3; item.ObjectType = "E"; item.Name = "E"; item.PredecessorRowNumber = "2"; 
rowstringList.Add(item); 
rowstringListEPK = rowstringList; 
for (int i = 0; i < rowstringList.Count; i++) 
{ 
    tableobject.Add(rowstringList[i]); 
} 
DataGrid1.ItemsSource = tableobject; 


//Button Code 
foreach (TableDataRowStringItem item in rowstringListEPK) 
{ 
    if (item.ObjectType == "Function" **(&& Hier i schould write if row.Isselected)**) 
    { 
     rowStringItem.Name = item.Name; 
     tabControl.Items.Add(tabItem); 
     tabItem.Focus(); 
     tabItem.IsSelected = true; 
     tabItem.Header = rowStringItem.Name; 
     TableTab.Visibility = Visibility.Visible 
    } 
    else do nothing 
} 

//XAML Code 
<DataGrid.RowStyle> 
    <Style TargetType="DataGridRow"> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="BorderBrush" Value="Blue" /> 
       <Setter Property="BorderThickness" Value="1" /> 
       <Setter Property="AllowDrop" Value="True" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.RowStyle> 

回答

0

您的测试将是:

if (dataGrid1.SelectedItem != null) //test if a row is selected 

,你可以访问数据行与

dataGrid1.SelectedItem 
+0

感谢名单,但我怎么能写在喜欢一个例子,如果我选择行2,按下按钮,它会打开我的新的TabItem – User1979 2012-08-15 13:22:26

+0

感谢名单,它的工作 – User1979 2012-08-15 13:50:08

+0

喜C#,竭诚为您服务 – 2012-08-15 13:57:02

1

这可能会帮助:

<DataGrid SelectionMode="Single" SelectionUnit="FullRow" ... 

DataGrid dataGrid = new DataGrid(); 
dataGrid.SelectionUnit = DataGridSelectionUnit.FullRow; 
dataGrid.SelectionMode = DataGridSelectionMode.Single;