想问,因为之前从未在TextBlock上做过这个。我无法复制其中有TextBlock的DataGridTemplateColumn的内容,并为此分配了一个上下文菜单。
复制的内容为空白。
当我在MS中尝试时,单词是Blank Cell。
我的模板列和ContextMenu如下所示。
我尝试使用TextBox但它在启用文本框时工作,尽管网格列是只读的。它允许编辑,当我们禁用它时,它不会复制文本。
<DataGridTemplateColumn Header="Details" Width="*" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding details}" TextWrapping="Wrap">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy" Command="Copy"></MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
答案 0 :(得分:2)
为什么复制的内容为空字符串是TextBlock不支持像 TextBox 这样的复制,剪切和过去命令。因此,如果使用TextBlock,您需要手动支持这些命令,但您可以使用TextBox来支持复制命令,该命令可以充当TextBlock。请检查以下内容。
<TextBox Background="Transparent" BorderThickness="0" Text="{Binding details}" IsReadOnly="True" TextWrapping="Wrap">
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy" Command="Copy"></MenuItem>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
[更新]
首先,下面的代码可以正确执行吗?
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Background="Transparent" BorderThickness="0" Text="test" IsReadOnly="True" TextWrapping="Wrap">
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy" Command="Copy"></MenuItem>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</Grid>
</Window>
答案 1 :(得分:0)
在我的特定情况下,我通过以下方式解决了该问题:
IsReadOnly
。Command=Copy
而不是使用Command="{Binding CopyToClipboard}"
,而是将命令绑定到该行后面的ViewModel。