簡體   English   中英

如何將圖標綁定到資源中定義的上下文菜單

[英]How do you bind Icons to context menu defined in the resources

我想將圖標綁定到WPF數據網格中的上下文菜單項。 盡管這對於數據網格本身中的上下文菜單(在數據網格中的空白區域上單擊鼠標右鍵)可以正常工作,但不適用於數據網格中的項目(在數據行上單擊鼠標右鍵)。 任何想法為什么這不起作用? 感謝您的回答。

碼:

datagridTarget.DataContext = contextIcons;
// contextIcons contains the icon elements

XAML:

<DataGrid Name="datagridTarget">
    <DataGrid.Resources>
        <ContextMenu x:Key="DGTContextMenu">
            <MenuItem Header="Delete" Click="datagridTargetDelete_Click">
                <MenuItem.Icon>
                    <Image Height="16" Width="16" Source="{Binding ContextDeleteIcon}"/>
                </MenuItem.Icon>
            </MenuItem>
        </ContextMenu>
    </DataGrid.Resources>
    <ContextMenuService.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Delete" Click="datagridTargetDelete_Click">
                <MenuItem.Icon>
                    <Image Height="16" Width="16" Source="{Binding ContextDeleteIcon}"/>
                </MenuItem.Icon>
            </MenuItem>
        </ContextMenu>
    </ContextMenuService.ContextMenu>
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="" Width="Auto" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image ContextMenu="{DynamicResource DGTContextMenu}" Height="16" Width="16" Source="{Binding ObjectImage}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

DataGrid中的項目通常每個都有一個不同的DataContext來表示每個項目。 例如,對於綁定到“人員”類列表的DataGrid,每行代表每個人。

如果要綁定到父DataContext,則需要使用更高級的綁定語法,例如:

{Binding DataContext.ContextDeleteIcon, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM