Добавление другого контекстного меню для заголовка таблицы данных - PullRequest
2 голосов
/ 25 апреля 2010

Я хочу добавить другое контекстное меню для заголовка моей таблицы данных в WPF. Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 26 апреля 2010

Эти ресурсы помогут вам в пути:

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

  • RichTextBox
  • Сетка данных
  • и многое другое ..

Имеет Control.ContextMenu, где вы можете создать свое конкретное меню для этого элемента. Взятый из первой ссылки выше, см. Этот пример на RichTextBox

<RichTextBox>
    <RichTextBox.ContextMenu>
        <ContextMenu>
        </ContextMenu>
    </RichTextBox.ContextMenu> 
</RichTextBox>

И это относится не только к ContextMenu! Есть и другие многоразовые элементы, подобные этому. В зависимости от того, какую DataGrid вы используете, для этого вам нужно изучить API, но, скорее всего, он работает следующим образом.

0 голосов
/ 10 февраля 2018

Вы можете создать контекстное меню для заголовков столбцов таблицы данных или для строк таблицы данных, используя DataGrid.ColumnHeaderStyle или DataGrid.RowStyle соответственно. Смотрите пример:

<Window.Resources>
    <ContextMenu x:Key="ColumnHeaderMenu">
        <MenuItem Header="Header Option 1"/>
        <MenuItem Header="Header Option 2"/>
    </ContextMenu>
    <ContextMenu x:Key="RowMenu">
        <MenuItem Header="Row Option 1"/>
        <MenuItem Header="Row Option 2"/>
    </ContextMenu>
</Window.Resources>
<Grid>
    <DataGrid ItemsSource="{Binding memberList}" AutoGenerateColumns="True">
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="DataGridColumnHeader">
                <Setter Property="ContextMenu" Value="{StaticResource ColumnHeaderMenu}"/>
            </Style>
        </DataGrid.ColumnHeaderStyle>
        <DataGrid.RowStyle>
            <Style TargetType="DataGridRow">
                <Setter Property="ContextMenu" Value="{StaticResource RowMenu}"/>
            </Style>
        </DataGrid.RowStyle>
    </DataGrid>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...