【发布时间】:2020-06-30 18:44:48
【问题描述】:
使用Microsoft.Graph,我正在填充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 datagrid 中使用过它)。但是这里我不清楚这里的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();
此外,我在上面的按钮单击事件中尝试了以下操作,但是当单击单元格时,它返回下面的 eventitem 为空。同样,使用 Event eventitem = (sender as FrameworkElement).DataContext as Event; 也会将 eventitem 返回为 null。
List<Event> eventitem = (sender as FrameworkElement).DataContext as List<Event>;
string st = eventitem[1].ToString();
【问题讨论】:
-
如何设置
DataGridItemsSource? -
@MartinZikmund 我设置为
EventList.ItemsSource = events.CurrentPage.ToList(); -
@MartinZikmund 为了回答您的问题,我还添加了一个 UPDATE 部分,其中包含更多详细信息。
-
你的DataGrid能很好的显示吗?如果您使用
object eventitem = (sender as FrameworkElement).DataContext;,它可以返回正确的 DataContext 还是仍然为空?如果还是null,能否提供一个简单的样本,可以复制给我们测试? -
当我按照您分享的教程并单击 HyperlinkButton 时,我可以使用
Event eventitem = (sender as FrameworkElement).DataContext as Event;获得正确的 DataContext。所以我无法重现你的问题。最好提供一个可以复制的简单样本供我们测试。
标签: c# uwp datagrid windows-community-toolkit