@Anton_repr

Как открыть форму по нажатию на строку в DataGrid?

Я не особо понимаю, как отследить нажатие на DataGrid. вот xaml разметка:
<DataGrid AutoGenerateColumns="False" x:Name="dg_recipes" Margin="10,249,10,10">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Название" Binding="{Binding Path='name'}" Width="320"/>
                <DataGridTextColumn Header="Время приготовления" Width="280"/>
            </DataGrid.Columns>
        </DataGrid>


По нажатию на выбранную строчку в 1 столбце, должна открываться форма
  • Вопрос задан
  • 705 просмотров
Решения вопроса 1
SpacePurr
@SpacePurr
c#, wpf
  • Создаем колонку, содержимое в ячейках которой будет представлять Button с событием Button_Click.
    <DataGrid Name="MyDataGrid" ItemsSource="{Binding Table}">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button Click="Button_Click">Open Form</Button>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

  • Пусть имеется некая форма TosterForm, конструктор которой принимает один строковый аргумент - значение в 3 колонке выделенной строки.
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        TosterForm form = new TosterForm(((DataRowView)MyDataGrid.SelectedItem).Row.ItemArray[3].ToString());
        form.ShowDialog();
    }

    По поводу получения значения в ячейке может есть и другой вариант, я до этого практически не работал с DataGrid.


Собственно, вроде все.
5dc1d8876549f349153436.gif
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы