我有一个listview,里面有一个gridview,它被绑定到一个自定义对象列表。在一个单元格中,我有三个我交换的元素,其中一个是带有click事件的超链接。
当我转到超链接上的click事件时,如何访问绑定在同一行的'CompanyName'?
这个问题可能是我的ASP.Net背景 - 我是WPF的新手。
<GridViewColumn Header="File" Width="100" DisplayMemberBinding="{Binding Path=CompanyFile}"/>
<GridViewColumn Header="Action" Width="300">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Status}" Visibility="{Binding Path=StatusVisibility}"></TextBlock>
<TextBlock Visibility="{Binding Path=ButtonVisibility}"><Hyperlink Click="Hyperlink_Click"><TextBlock Text="{Binding Path=Button}"></TextBlock></Hyperlink></TextBlock>
<ProgressBar Value="{Binding Path=Progress}" Visibility="{Binding Path=ProgressVisibility}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
答案 0 :(得分:3)
Hyperlink
继承了父DataContext
的{{1}},因此您只需要投射它:
ListViewItem
另一种选择是将超链接的void Hyperlink_Click(object sender, EventArgs e)
{
Hyperlink link = (Hyperlink)sender;
MyCustomObject obj = (MyCustomObject)link.DataContext;
string companyName = obj.CompanyName;
...
}
属性绑定到Command
上的命令,而不是显式处理DataContext
事件。这有助于将视图与业务相关的代码分离,这是在MVVM pattern中执行操作的常用方法。