老周的部落格http://blog.csdn.net/tcjiaan,轉載請註明原作者和出處。
如何獲得當前機器上的裝置ID,名稱以及縮圖,我們需要用到一個類——DeviceInformation類(位於 Windows.Devices.Enumeration命名空間)。
使用方法是這樣的:
1、通過DeviceInformation.FindAllAsync靜態方法獲得一個DeviceInformationCollection集合。
2、將這個集合foreach一下就可以訪問其中各成員,這個相信不難明白。
3、DeviceInformation對象的Id屬性擷取裝置的標識符。
4、Name屬性擷取裝置名稱。
5、GetThumbnailAsync方法擷取裝置的縮圖。
看起來是不是很簡單呢?下面,我們用一個執行個體來深化一下。
1、啟動VS,建立項目(此處省略38個字)。
2、在首頁的根Grid中聲明一個ListView,用來顯示擷取到的裝置資訊。XAML如下:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <ListView Name="lvDevices" Margin="10" SelectionMode="None"> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="3" ItemWidth="420"/> </ItemsPanelTemplate> </ListView.ItemsPanel> </ListView> </Grid>
4、在XAML文檔視圖中右擊,從彈出的菜單中選擇“查看代碼”,切換到C#程式碼檢視,然後在重寫的OnNavigatedTo方法中加入下面代碼:
protected async override void OnNavigatedTo(NavigationEventArgs e) { DeviceInformationCollection dcl = await DeviceInformation.FindAllAsync(); this.lvDevices.Items.Clear(); foreach (var item in dcl) { // 項內容布局 Grid itemRoot = new Grid(); itemRoot.Margin = new Thickness(15); itemRoot.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); itemRoot.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // 取得表徵圖 DeviceThumbnail thumb = await item.GetThumbnailAsync(); BitmapImage bmp = new BitmapImage(); thumb.Seek(0); bmp.SetSource(thumb); // 顯示映像 Image myImage = new Image(); myImage.Width = 80; myImage.Height = 80; myImage.Stretch = Stretch.Uniform; myImage.Margin = new Thickness(10); myImage.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center; myImage.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top; myImage.Source = bmp; Grid.SetColumn(myImage, 0); itemRoot.Children.Add(myImage); // 顯示文本 TextBlock textbl = new TextBlock(); textbl.TextWrapping = TextWrapping.Wrap; Run myRunTitle = new Run(); myRunTitle.Text = item.Name; myRunTitle.FontSize = 20; myRunTitle.FontWeight = FontWeights.Bold; textbl.Inlines.Add(myRunTitle); textbl.Inlines.Add(new LineBreak()); Run runID = new Run() { Text = item.Id }; textbl.Inlines.Add(runID); Grid.SetColumn(textbl, 1); itemRoot.Children.Add(textbl); ListViewItem lvItem = new ListViewItem(); //lvItem.Width = 600; lvItem.Content = itemRoot; // 將項添加到ListView中 this.lvDevices.Items.Add(lvItem); } }
上面代碼我簡單說一下,如果熟悉WPF的朋友,相信下面的內容你不用看了。
由於要顯示的內容有點複雜,包含縮圖和文本,因此用一個Grid作為ListViewItem的內容。
這個Grid劃分為兩列,第一列放Image控制項,第二列放一個用顯示文本資訊的TextBlock控制項。在TextBlock中,用到了Document對象,兩塊文本均為Run對象,中間通過一個LineBreak換行。
第一個Run顯示裝置名稱,加粗;第二個Run沒有任何修飾,普通文本,顯示ID。
是運行結果。