如何从 Gridview 列内的超链接单击事件获取绑定数据



我的问题是如何使用超链接单击事件从其他列获取绑定数据?

我有一个 GridView,它显示我的自定义类中的数据。网格视图包含 4 列,其中一列具有超链接。

.XML:

<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>

现在我想要的是当我单击第三或第四列的超链接时。它应该给我第三列或第四列(货币名称,货币标题等)的所有数据。

首先,让我们在视图中引用 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>  

或:

<UserControl.DataContext>
    <vm:MainViewModel/>
</UserControl.DataContext>

在 xaml 中,应按如下方式定义列表视图:

<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"); }
}  

此时,您已在 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

最新更新