【萬里征程——Windows App開發】如何使用貼上板
記得智慧手機剛出來那會比較火的一個概念“能夠複製貼上的手機就是智慧手機”。現在看來,這不過是個老掉牙的功能了,但實際用處卻是非常強大的,那麼現在我們就來試試怎麼做到這個功能。
貼上板的英文名叫做Clipboard,這也是它的類名了。
新建工程這種就不說了,在XAML中程式碼如下:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid Margin="12" HorizontalAlignment="Left" VerticalAlignment="Top" Width="500" Height="500">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Name="btnClip" Margin="0,3,0,16" Content="貼上" FontSize="32" Click="btnClip_Click" IsEnabled="False"/>
<ScrollViewer Name="scrollView" Grid.Row="1" Visibility="Collapsed">
<TextBlock Margin="12" Name="tBlockClipboard" FontSize="35" Foreground="Gainsboro" TextWrapping="Wrap" />
</ScrollViewer>
</Grid>
</Grid>
在後臺程式碼中寫上這麼一個方法:
void Clipboard_ContentChanged(object sender, object e)
{
DataPackageView pv = Clipboard.GetContent();
if (pv.Contains(StandardDataFormats.Text))
{
btnClip.IsEnabled = true;
}
}
StandardDataFormats是標準資料格式,這裡判斷它是否是Text,如果是的話則讓前面的Button按鈕可用(之前設為不可用,以灰色顯示)。
標準資料格式有Bitmap,HTML,RTF,StorageItems,Text,Uri等。
然後在按鈕的Click事件中寫如下程式碼:
private async void btnClip_Click(object sender, RoutedEventArgs e)
{
var txt = await Clipboard.GetContent().GetTextAsync();
tBlockClipboard.Text = txt;
}
這裡我們使用了Clipboard類的GetContent()方法,用於在剪下板中取出DataPackageView物件資料;類似的還有SetContent(),用於把資料存入剪下板中。還有Clear事件來清空剪下板,Flush事件把資料從源寫入到剪下板,並且在應用程式退出後依然保留在剪下板中。還有ContentChanged事件在剪下板中儲存的資料內容發生變化時自動啟用以達到監聽剪下板內容變化的效果。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Clipboard.ContentChanged += Clipboard_ContentChanged;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Clipboard.ContentChanged -= Clipboard_ContentChanged;
}
void Clipboard_ContentChanged(object sender, object e)
{
DataPackageView pv = Clipboard.GetContent();
if (pv.Contains(StandardDataFormats.Text)||pv.Contains(StandardDataFormats.Bitmap))
{
btnClip.IsEnabled = true;
}
}
大家可以試試,已經完成了,但我們可以做的更多,不是嗎?
完整的程式碼如下:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid Margin="12" HorizontalAlignment="Left" VerticalAlignment="Top" Width="500" Height="500">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Name="btnClip" Margin="0,3,0,16" Content="貼上" FontSize="32" Click="btnClip_Click" IsEnabled="False"/>
<ScrollViewer Name="scrollView" Grid.Row="1" Visibility="Collapsed">
<TextBlock Margin="12" Name="tBlockClipboard" FontSize="35" Foreground="Gainsboro" TextWrapping="Wrap" />
</ScrollViewer>
<Image x:Name="imgClicpboard" Grid.Row="1" Margin="5" Stretch="Uniform" Visibility="Collapsed"/>
</Grid>
</Grid>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Clipboard.ContentChanged += Clipboard_ContentChanged;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Clipboard.ContentChanged -= Clipboard_ContentChanged;
}
void Clipboard_ContentChanged(object sender, object e)
{
DataPackageView pv = Clipboard.GetContent();
if (pv.Contains(StandardDataFormats.Text)||pv.Contains(StandardDataFormats.Bitmap))
{
btnClip.IsEnabled = true;
}
}
private async void btnClip_Click(object sender, RoutedEventArgs e)
{
scrollView.Visibility = Visibility.Collapsed;
imgClicpboard.Visibility = Visibility.Collapsed;
tBlockClipboard.Text = " ";
imgClicpboard.Source = null;
DataPackageView pv = Clipboard.GetContent();
if (pv.Contains(StandardDataFormats.Text))
{
scrollView.Visibility = Visibility;
var txt = await Clipboard.GetContent().GetTextAsync();
tBlockClipboard.Text = txt;
}
else if(pv.Contains(StandardDataFormats.Bitmap))
{
imgClicpboard.Visibility = Visibility;
var bmp = await Clipboard.GetContent().GetBitmapAsync();
Windows.UI.Xaml.Media.Imaging.BitmapImage bitMap = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
bitMap.SetSource(await bmp.OpenReadAsync());
this.imgClicpboard.Source = bitMap;
}
}
}
現在它還可以複製圖片了哦~
感謝您的訪問,希望對您有所幫助。 歡迎大家關注、收藏以及評論。
為使本文得到斧正和提問,轉載請註明出處:
http://blog.csdn.net/nomasp
相關文章
- 【萬里征程——Windows App開發】動態磁貼WindowsAPP
- 【萬里征程——Windows App開發】使用Toast通知WindowsAPPAST
- 【萬里征程——Windows App開發】動畫1WindowsAPP動畫
- 【萬里征程——Windows App開發】開發準備WindowsAPP
- 【萬里征程——Windows App開發】使用華麗麗的字型WindowsAPP
- 【萬里征程——Windows App開發】應用欄WindowsAPP
- 【萬里征程——Windows App開發】繪製圖形WindowsAPP
- 【萬里征程——Windows App開發】畫筆和影象WindowsAPP
- 【萬里征程——Windows App開發】補充:JSONWindowsAPPJSON
- 【萬里征程——Windows App開發】DatePickerFlyout、TimePickerFlyout的使用WindowsAPP
- 【萬里征程——Windows App開發】DatePicker&TimepickerWindowsAPP
- 【萬里征程——Windows App開發】ListView&GridView之分組WindowsAPPView
- 【萬里征程——Windows App開發】SemanticZoom檢視切換WindowsAPPOOM
- 【萬里征程——Windows App開發】控制元件大集合1WindowsAPP控制元件
- 【萬里征程——Windows App開發】控制元件大集合2WindowsAPP控制元件
- 【萬里征程——Windows App開發】在應用中整合搜尋WindowsAPP
- 【萬里征程——Windows App開發】如何儲存、讀取、刪除應用資料WindowsAPP
- 【萬里征程——Windows App開發】頁面佈局和基本導航WindowsAPP
- 【萬里征程——Windows App開發】編輯文字及鍵盤輸入WindowsAPP
- 【萬里征程——Windows App開發】ListView&GridView之新增資料WindowsAPPView
- 【萬里征程——Windows App開發】應用設定和應用幫助WindowsAPP
- 【萬里征程——Windows App開發】用浮出控制元件做預覽效果WindowsAPP控制元件
- 【萬里征程——Windows App開發】檔案&資料——檔案選取器WindowsAPP
- 【萬里征程——Windows App開發】檔案&資料——寫入與讀取WindowsAPP
- 【萬里征程——Windows App開發】設定共享(共享源和共享目標)WindowsAPP
- 【萬里征程——Windows App開發】檔案&資料——獲取檔案屬性WindowsAPP
- 【萬里征程——Windows App開發】如何在多個頁面間讀取/儲存檔案【草稿】WindowsAPP
- 【萬里征程——Windows App開發】檔案&資料——讀取檔案/資料夾名WindowsAPP
- 【萬里征程——Windows App開發】資料繫結——簡單示例、更改通知、資料轉換WindowsAPP
- 如何在Windows上使用Python進行開發WindowsPython
- AD中如何使用特殊貼上和陣列貼上陣列
- 【UltraEdit】貼上板的妙用 --解讀貼上失效的真正原因
- 如何在蘋果Mac滑鼠或觸控板上覆制和貼上?蘋果Mac
- 如何在 Linux/Windows/MacOS 上使用 .NET 進行開發LinuxWindowsMac
- Ubuntu20.04 vim複製貼上,使用系統剪下板Ubuntu
- vim複製文字到系統貼上板
- 乾貨分享:Air780E開發板如何使用?AI
- Windows平臺上也可以進行iOS App的開發WindowsiOSAPP