Ole*_*sii 0 .net c# wpf xaml mvvm
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
DetailsLink静态资源表示文本"链接".当DataGrid填充时,每行都有包含链接的最后一列,这将允许用户查看详细信息.要显示详细信息,我需要在行中获取整个对象,单击链接"链接".
不幸的是,我还没有找到解决方案.可能有一个明显的决定?:)
谢谢.
如果您需要传递参数,那么最好使用a 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>
Run Code Online (Sandbox Code Playgroud)
现在创建一个名为的函数NavigateToLinkCommand和一个Link在ViewModel中调用的字符串Property ,当前行将DataContext作为您的参数传递Command,并记下AncestorType您ViewModel设置的DataContext .
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |