Microsoft.Toolkit.Uwp.UI.DataGrid - 如何通过单击单元格的按钮获取单元格值
Microsoft.Toolkit.Uwp.UI.DataGrid - how to get cell value from button click on the cell
使用Microsoft.Graph, I'm populating UWP Tookit DataGrid如下。
问题:如何在单元格上的按钮单击事件中获取所选单元格的值?
填充网格的代码:
using Microsoft.Graph
..........
// Get the events
IUserEventsCollectionPage events = await graphClient.Me.Events.Request()
.Select("subject,organizer,start,end")
.OrderBy("createdDateTime DESC")
.GetAsync();
MainPage.Xaml 与 DataGrid:
<Page
....>
<Grid>
<controls:DataGrid x:Name="EventList" Grid.Row="1" AutoGenerateColumns="False">
<controls:DataGrid.Columns>
<controls:DataGridTextColumn Header="Organizer" Width="SizeToCells" Binding="{Binding Organizer.EmailAddress.Name}" FontSize="20" />
<controls:DataGridTemplateColumn Header="Subject">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<HyperlinkButton x:Name="hlBtnFileDownload" Content="{Binding subject}" Click="hlBtnFileDownload_Click"></HyperlinkButton>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
..................
..................
</controls:DataGrid.Columns>
</controls:DataGrid>
</Grid>
</Page>
按钮点击事件:
虽然代码应该类似于以下内容(因为我在 WPF
数据网格中使用过它)。但是在这里我不清楚这里的 ClassName
应该是什么,因为上面查询中使用的 IUserEventsCollectionPage
是一个接口,而 online search 没有提供关于这个接口的太多信息。
private void hlBtnFileDownload_Click(object sender, RoutedEventArgs e)
{
ClassName classObj = dataGridName.SelectedItem as ClassName;
string id = classObj.ID;
}
更新:
为了回答用户 @ Martin Zikmund
的问题,DataGrid ItemsSource 设置如下:
EventList.ItemsSource = events.CurrentPage.ToList();
此外,我在上面的按钮单击事件中尝试了以下操作,但是当单击单元格时,它 returns eventitem
下面为 null。同样,使用 Event eventitem = (sender as FrameworkElement).DataContext as Event;
也 return eventitem
作为 null.
List<Event> eventitem = (sender as FrameworkElement).DataContext as List<Event>;
string st = eventitem[1].ToString();
绑定到单个单元格的项目不是 List<Event>
,而是 Event
,因此以下应该有效:
var event = (sender as FrameworkElement).DataContext as Event;
使用Microsoft.Graph, I'm populating UWP Tookit DataGrid如下。
问题:如何在单元格上的按钮单击事件中获取所选单元格的值?
填充网格的代码:
using Microsoft.Graph
..........
// Get the events
IUserEventsCollectionPage events = await graphClient.Me.Events.Request()
.Select("subject,organizer,start,end")
.OrderBy("createdDateTime DESC")
.GetAsync();
MainPage.Xaml 与 DataGrid:
<Page
....>
<Grid>
<controls:DataGrid x:Name="EventList" Grid.Row="1" AutoGenerateColumns="False">
<controls:DataGrid.Columns>
<controls:DataGridTextColumn Header="Organizer" Width="SizeToCells" Binding="{Binding Organizer.EmailAddress.Name}" FontSize="20" />
<controls:DataGridTemplateColumn Header="Subject">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<HyperlinkButton x:Name="hlBtnFileDownload" Content="{Binding subject}" Click="hlBtnFileDownload_Click"></HyperlinkButton>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
..................
..................
</controls:DataGrid.Columns>
</controls:DataGrid>
</Grid>
</Page>
按钮点击事件:
虽然代码应该类似于以下内容(因为我在 WPF
数据网格中使用过它)。但是在这里我不清楚这里的 ClassName
应该是什么,因为上面查询中使用的 IUserEventsCollectionPage
是一个接口,而 online search 没有提供关于这个接口的太多信息。
private void hlBtnFileDownload_Click(object sender, RoutedEventArgs e)
{
ClassName classObj = dataGridName.SelectedItem as ClassName;
string id = classObj.ID;
}
更新:
为了回答用户 @ Martin Zikmund
的问题,DataGrid ItemsSource 设置如下:
EventList.ItemsSource = events.CurrentPage.ToList();
此外,我在上面的按钮单击事件中尝试了以下操作,但是当单击单元格时,它 returns eventitem
下面为 null。同样,使用 Event eventitem = (sender as FrameworkElement).DataContext as Event;
也 return eventitem
作为 null.
List<Event> eventitem = (sender as FrameworkElement).DataContext as List<Event>;
string st = eventitem[1].ToString();
绑定到单个单元格的项目不是 List<Event>
,而是 Event
,因此以下应该有效:
var event = (sender as FrameworkElement).DataContext as Event;