Итак, это мое решение, которое позволяет мне копировать ListViewItem
:
XAML
<Window.CommandBindings>
<CommandBinding
Command="ApplicationCommands.Copy"CanExecute="CommandBinding_CanExecute"Executed="CommandBinding_Executed"/>
</Window.CommandBindings>
<Window.Resources>
<ContextMenu x:Key="MyContextMenu">
<MenuItem Header="Copy" Command="ApplicationCommands.Copy"/>
</ContextMenu>
<Style x:Key="MyItemContainerStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource MyContextMenu}" />
</Style>
</Window.Resources>
<Grid>
<ListView x:Name="MyListView" ItemContainerStyle="{StaticResource MyItemContainerStyle}"/>
</Grid>
Код
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
Clipboard.SetText(MyListView.SelectedItem.ToString());
}
Моя модель просмотра
public class LogEntry
{
public string DateTime { get; set; }
public int Index { get; set; }
public string Source { get; set; }
public Level Level { get; set; }
public string Message { get; set; }
public override string ToString()
{
return Message;
}
}
Так что мой ListViewItem
содержит несколько столбцов в соответствии с этим LogEvent
объект и, как вы можете видеть мои ToString
вернуть только сообщение, но я хочу иметь возможность копировать каждый column
отдельный.
Какие-либо предложения ?
Задача ещё не решена.
Других решений пока нет …