Как я могу получить доступ к информации в выбранной строке вида сетки XAML? - PullRequest
0 голосов
/ 10 мая 2011

У меня есть список с сеткой внутри, и он связан со списком пользовательских объектов. В одной ячейке у меня есть три элемента, между которыми я меняюсь, один из которых - гиперссылка с событием щелчка.

Как получить доступ к «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 Ответ

3 голосов
/ 10 мая 2011

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...