win8开发(8)——获取设备信息

本帖最后由 白西 于 2012-11-2 15:24 编辑

如何获得当前机器上的设备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。
下图是运行结果。


1.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值