Подтвердить что ты не робот

Использование элементов данных WPF DataGridHyperLinkColumn для открытия проводника Windows и открытия файлов

Я хочу добиться следующего:

Создайте WPF DataGrid с двумя столбцами:

В первом будут элементы, показывающие пути к каталогам, в стиле гиперссылки. При нажатии на гиперссылку откроется проводник Windows по пути, указанному в элементе.

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

Я не знаю, правильный ли он, но я добавил DataGridHyperlinkColumn в свой DataGrid. Одна из проблем заключалась в том, чтобы добавлять элементы Uri, которые не относятся к интернет-местоположениям. Другая проблема заключалась в том, чтобы обрабатывать клики таким образом, чтобы не открывать веб-браузер.

Любой может помочь?

4b9b3361

Ответ 1

Это работает повсеместно:

<DataGridHyperlinkColumn Binding="{Binding Link}">
    <DataGridHyperlinkColumn.ElementStyle>
        <Style>
            <EventSetter Event="Hyperlink.Click" Handler="DG_Hyperlink_Click"/>
        </Style>
    </DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
private void DG_Hyperlink_Click(object sender, RoutedEventArgs e)
{
    Hyperlink link = (Hyperlink)e.OriginalSource;
    Process.Start(link.NavigateUri.AbsoluteUri);
}

Если URI указывает веб-сайт, он будет открыт с помощью веб-браузера по умолчанию, если он является папкой, он будет открыт в проводнике, если это файл, он будет открыт приложением по умолчанию, связанным с ним.


Чтобы использовать это для автогенерированных столбцов, ваше свойство должно иметь тип Uri, поэтому генерируется DataGridHyperlinkColumn. Затем вы можете подключить событие, поместив стиль в DataGrid.Resources:

<DataGrid.Resources>
    <Style TargetType="Hyperlink">
        <EventSetter Event="Click" Handler="DG_Hyperlink_Click"/>
    </Style>
</DataGrid.Resources>