当剪贴板内容从我们的应用程序或其他应用程序更改时,我想执行不同的操作。 每当剪贴板内容发生更改时,都会触发 Clipboard_ContentChanged 事件。如果我从其他应用程序复制一些文本,我想做一些不同的操作。如何做? 如何区分从我们的应用程序更改的剪贴板内容还是从 UWP 中的另一个应用程序更改的剪贴板内容?
我的Xaml:
<Grid>
<StackPanel>
<Button x:Name="CopyToClipBoard" Click="CopyToClipBoard_Click">Copy To ClipBoard</Button>
<TextBlock x:Name="CopiedFrom"> Clipboard Content Changed From : </TextBlock>
<TextBlock x:Name="DispalyText" FontWeight="Bold"/>
</StackPanel>
</Grid>
C# 代码:
public MainPage()
{
this.InitializeComponent();
Clipboard.ContentChanged += Clipboard_ContentChanged;
}
private async void Clipboard_ContentChanged(object sender, object e)
{
string str = "";
if (/*ContentChanged fired due to clipboard content changed from our app*/)
{
str = "Text Copied from Our App";
//Action - 1
}
else//ContentChanged fired due to clipboard content changed from outside app
{
str = "Text Copied from other app";
//Action - 2
}
DispalyText.Text = str + await Clipboard.GetContent().GetTextAsync();
}
private void CopyToClipBoard_Click(object sender, RoutedEventArgs e)
{
DataPackage dataPackage = new DataPackage();
dataPackage.SetText("Hello Clipboard !!");
Clipboard.SetContent(dataPackage);
}
如何区分从我们的应用程序更改的剪贴板内容还是从UWP中的另一个应用程序更改的剪贴板内容?
仅从UWP方面来说,没有UWP Api可以实现你想要的。 Clipboard.ContentChanged Event 从系统中跟踪剪贴板中存储的数据的变化,但它不会知道剪辑数据的来源。