Windows 8.1处理不同的数据类型
本文关键字:数据类型 处理 Windows | 更新日期: 2023-09-27 18:04:09
我有一个gridview,可以在一个项目上触发一个持有事件。项目包括stackpanel
, textblock
和image
,我目前正在处理以下代码
private async void gvJobs_Holding(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e)
{
JobLocal job = null;
if(e.OriginalSource is TextBlock)
{
job = (JobLocal)((TextBlock)e.OriginalSource).DataContext;
}
else if (e.OriginalSource is Image)
{
job = (JobLocal)((Image)e.OriginalSource).DataContext;
}
else if (e.OriginalSource is StackPanel)
{
job = (JobLocal)((StackPanel)e.OriginalSource).DataContext;
}
....code based on above result
}
,但我觉得有比使用多个if语句更好的方法。我尝试使用var
,但我无法访问DataContext
有没有人能告诉我一个更好的方法来实现我的目标?
你的UI元素是从FrameworkElement
派生出来的,所以你可以转换成这个
if (e.OriginalSource is FrameworkElement) {
job = (JobLocal)((FrameworkElement) e.OriginalSource).DataContext;
}
这看起来是使用c# 6.0的空条件成员访问操作符并使其成为一行
的好情况。var job = (e.OriginalSource as FrameworkElement)?.DataContext as JobLocal;
if(job != null) ...