gpt4 book ai didi

c# - 单击DataGridHyperlinkColumn后,WPF MVVM获取行对象

转载 作者:行者123 更新时间:2023-12-03 10:53:25 25 4
gpt4 key购买 nike

我正在使用WPF MVVM模式,并具有一个DataGrid,如:

        <DataGrid Grid.Row="1" Margin="0,10,0,0" AutoGenerateColumns="False" ItemsSource="{Binding Path=displayedResults}">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Operation" Binding="{Binding Path=Mode}" />
<DataGridTextColumn Width="*" Header="Status" Binding="{Binding Path=Result, Converter={StaticResource EnumToString}}" />
<DataGridHyperlinkColumn Width="100" Header="Details" ContentBinding="{Binding Source={StaticResource DetailsLink}}" />
</DataGrid.Columns>
</DataGrid>

DetailsLink静态资源表示文本“Link”。填充DataGrid后,每一行的最后一列都带有链接,这将使用户可以查看详细信息。为了显示详细信息,我需要在单击链接“链接”的行处获取整个对象。

不幸的是,我还没有找到解决方案。可能有一个明显的决定? :)

谢谢你。

最佳答案

如果需要传递参数,则最好使用ICommand,因此创建DataTemplate而不是使用HyperLinkColoumn如下:

    <DataGridTemplateColumn Header="Link">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding Path=NavigateToLinkCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{Binding}">
<TextBlock Text="{Binding Path=DataContext.Link, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

现在,在ViewModel中创建一个名为 NavigateToLinkCommand的命令和一个名为 Link的字符串属性,当前行 DataContext将作为 Command的参数传递,并注意 AncestorType设置为 ViewModel DataContext。

关于c# - 单击DataGridHyperlinkColumn后,WPF MVVM获取行对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29432622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com