Команда копирования в ContextMenu поверх TextBlock внутри DataGridTemplateColumn - PullRequest
2 голосов
/ 27 октября 2011

Мысль о том, чтобы спросить, потому что никогда не делал этого раньше на TextBlock. Я не могу скопировать содержимое DataGridTemplateColumn, в котором он содержит TextBlock, и я назначил ему контекстное меню.

Скопированное содержимое пустое.

Когда я попробовал в MS, слово пустая ячейка.

Мой шаблон столбца и 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>

1 Ответ

2 голосов
/ 27 октября 2011

Почему скопированное содержимое является пустой строкой, это то, что 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...