2017-10-06 123 views
2

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

我有一个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> 

现在我想的是,当我从第三或第四列单击超链接。它应该给我所有来自第三或第四列(CurrencyName,Currencytitle等)的数据。

+0

在列表视图中将'SelectedItem'绑定到'ViewModel'中的一个属性。 – XAMlMAX

+0

我已经在后面的代码中完成了。所有三列都显示数据,因为我将它们绑定在一起。但是,当我点击特定列中的超链接时,我想要检索这些数据。 –

+0

'SelectedItem'将为每列保存** ALL **数据。 – XAMlMAX

回答

0

首先,让我们在观看基准视图模型:

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

在你的项目在您的视图模型选定了这一点,所以让我们去到事件处理程序:

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

相关问题