C# 如何从Gridview列中的超链接单击事件获取绑定数据
我的问题是如何使用超链接单击事件从其他列获取绑定数据 我有一个GridView,它显示来自自定义类的数据。GridView包含4列,其中一列有超链接 XML:C# 如何从Gridview列中的超链接单击事件获取绑定数据,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我的问题是如何使用超链接单击事件从其他列获取绑定数据 我有一个GridView,它显示来自自定义类的数据。GridView包含4列,其中一列有超链接 XML: <ListView Name="CCYVIEW"> <ListView.View> <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Authors">
<ListView Name="CCYVIEW">
<ListView.View>
<GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Authors">
<GridViewColumn Header="CurrencyName" Width="120" DisplayMemberBinding="{Binding Path=CurrencyName}" />
<GridViewColumn Header="CurrencyTitle" Width="122" DisplayMemberBinding="{Binding Path=CurrencyTitle}" />
<GridViewColumn Header="BaseCurrency" Width="122" DisplayMemberBinding="{Binding Path=BaseCurrency}" />
<GridViewColumn Width="170">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Foreground="#FFF7CA00" Click="Hyperlink_Click"> Add to market watch</Hyperlink>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
加入市场观察
现在我想要的是当我从第三列或第四列单击超链接时。它应该提供第三列或第四列的所有数据(CurrencyName、Currencytitle等) 首先,让我们在视图中引用ViewModel:
xmlns:vm="clr-namespace:VM;assembly=VM"//you will need to adapt this to the structure of your project.
现在将其设置为DataContext
:
<Window.DataContext>
<vm:MainViewModel/>
</Window.DataContext>
此时,您已经在ViewModel中选择了该项,因此让我们转到事件处理程序:
private void Hyperlink_OnClick(object sender, RoutedEventArgs e)
{
var vm = this.DataContext as MainViewModel;
vm.SelectedItem;//this is where you now have access to the selected item
}
现在有一种可能性,您可能没有选择该项,因此您可以只找到单击元素的父元素作为
ListViewItem
,然后获取该元素的DataContext
。在列表视图中将SelectedItem
绑定到ViewModel
中的属性。我在后面的代码中完成了这一操作。所有三列都显示了我绑定它们时的数据。但我想在单击某列中的超链接时检索这些数据。SelectedItem
将保存每列的所有数据。
<ListView Name="CCYVIEW" SelectedItem="{Binding NameOfTheVMProperty}">
private object _selectedItem;
public object SelectedItem //because you haven't specified the type I am using an object here
{
get { return _selectedItem; }
set { _selectedItem = value; OnPropertyChanged("SelectedItem"); }
}
private void Hyperlink_OnClick(object sender, RoutedEventArgs e)
{
var vm = this.DataContext as MainViewModel;
vm.SelectedItem;//this is where you now have access to the selected item
}