首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

新时尚Windows8开发(八):获取设备信息

2012-09-22 
新时尚Windows8开发(8):获取设备信息老周的博客http://blog.csdn.net/tcjiaan,转载请注明原作者和出处。 如

新时尚Windows8开发(8):获取设备信息

老周的博客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。

 

下图是运行结果。

新时尚Windows8开发(八):获取设备信息

热点排行