新時尚Windows8開發(8):擷取裝置資訊

來源:互聯網
上載者:User

老周的部落格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。

 

是運行結果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.