#wpf #xaml #gridview
#wpf #xaml #gridview
Вопрос:
У меня есть listview с gridview внутри него, и он привязан к списку пользовательских объектов. В одной ячейке у меня есть три элемента, которые я меняю местами, один из которых является гиперссылкой с событием щелчка.
Как мне получить доступ к ‘CompanyName’, который привязан к той же строке, когда я перехожу к событию click по гиперссылке?
Этот вопрос может противоречить моему 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>
Ответ №1:
Hyperlink
Наследует DataContext
родительский ListViewItem
файл, поэтому вам просто нужно его преобразовать:
void Hyperlink_Click(object sender, EventArgs e)
{
Hyperlink link = (Hyperlink)sender;
MyCustomObject obj = (MyCustomObject)link.DataContext;
string companyName = obj.CompanyName;
...
}
Другой вариант — привязать Command
свойство гиперссылки к вашей DataContext
команде вместо явной обработки Click
события. Это помогает отделить представление от кода, связанного с бизнесом, и это обычный способ выполнения действий в шаблоне MVVM.