我已经尝试了很多东西来解决这个问题,我似乎无法找到正确的答案。
我有一个包含6列的DataGrid
,用户只有在点击第6列上的任意行时才会被重定向到其他页面。
因此,用户只能点击To-Do
下的任何单元格。当他们点击那一行时,我需要它找到与该单元格在同一行的Type
。 E.G如果我点击了6 To-Do
,应该知道我点击了行类型Football
。
我希望这会将第一列中的Type
传递到另一个页面,以便我可以调出To-Do
下的所有不同Type
项。
这就是我的尝试:
cSViewEntity selectedView = dgFake.SelectedItem as cSViewEntity;
AllocateAudits page = new AllocateAudits()
{
DataContext = selectedView
};
FrameNavigation.Navigate(page);
但是当我这样做时,它没有达到这个方法:
public void Page_OnNavigatedTo(object sender, NavigationEventArgs e)
{
var newDataContext = e.Content;
_View = (cSViewEntity)newDataContext;
_Transactions = new List<cAuditTransactionTypeEntity>();
_Transactions = sp.GetTransactionTypes().ToList();
string TransactionType = _View.TransactionType;
int TransactionTypeID = _Transactions.FirstOrDefault(w => w.TransactionType == TransactionType).TransactionTypeId;
dgAllocate.ItemsSource = sp.GetTransactionsNotEvaluated(TransactionTypeID).ToList();
}
任何帮助都会非常有帮助,
感谢。
回答问题:
我将SelectedItem传递给另一个页面,然后在该页面上找到了Type并在该类型上运行了一个存储过程。
cSViewEntity obj = (cSViewEntity)dgFake.SelectedItem;
AllocateAudits page = new AllocateAudits(obj)
{
DataContext = obj
};
FrameNavigation.Navigate(page);
}
然后将它传递给构造函数,然后在方法的开头添加它。
private void Rawr(cSViewEntity obj)
{
var transactiontype = _obj.TransactionType;
//Stores the information from newDataContext to the entity with the name of _View.
_View = (cSViewEntity)obj;
答案 0 :(得分:0)
对于最后一列(column6),我建议你创建一个Datagrid templateCell。
例如:
<DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="To Do" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="MyNavigationButton" Content="{Binding ToDo}" Click="MyClickEvent"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Code Behind中的,运行MyClickEvent
private void MyClickEvent(object sender, EventArgs e)
{
var myBTNData = ((Button)sender).DataContext;
//here does follow your code based on the myBTNData
}
希望它能让你开始。您还可以使用其他元素(如超链接)