抱歉,我是C#的新手,我到处寻找,甚至找不到它看起来也很容易。 我想通过点击它来获取对象,但我不知道该怎么做。
xaml中的一个简单按钮:
<TextBlock
Text="{Binding ProjectName}"
VerticalAlignment="Center" Tapped="On_Tapped_Project"/>
我使用一个简单的功能:
private void On_Tapped_Project(object sender, TappedRoutedEventArgs e)
{
this.Frame.Navigate(typeof(NoteFolders), MyProjects[3]);
}
但我想拥有像MyProjects[x] x=(click Project)
这样的具体项目。
有什么想法吗?
答案 0 :(得分:3)
试试这个
var element = (sender as FrameworkElement);
if (element != null)
{
var project = element.DataContext as Project;
if (project != null)
{
//Implementation
}
}
答案 1 :(得分:0)
您需要将事件OriginalSource转换为您的类型(例如Project):
this.Frame.Navigate(typeof(NoteFolders), (Project) e.OriginalSource);
答案 2 :(得分:0)
您可以将项目ID存储在控件的标记属性中
<TextBlock
Text="{Binding ProjectName}" Tag="{Binding ProjectID}"
VerticalAlignment="Center" Tapped="On_Tapped_Project"/>
您可以通过访问标记属性来恢复它
private void On_Tapped_Project(object sender, TappedRoutedEventArgs e)
{
var projectID = ((TextBlock)sender).Tag as int;
Frame.Navigate(typeof(NoteFolders), MyProjects[projectID]);
}
答案 3 :(得分:0)
private void On_Tapped_Project(object sender, TappedRoutedEventArgs e)
{
var projectID = ((TextBlock)sender).Tag as int;
Frame.Navigate(typeof(NoteFolders), MyProjects[projectID]);
}
是一种方法,但建议以这种方式做到这一点:
private void On_Tapped_Project(object sender, TappedRoutedEventArgs e)
{
var projectID = (sender as TextBlock).Tag as int;
Frame.Navigate(typeof(NoteFolders), MyProjects[projectID]);
}
&#34;发送者为ElementType&#34;是投射发送者的正确方法,其他方法可能会导致轻微问题,总是做最好的代码,不要错过为什么一次出错。