Windows Phone8.1 SDK中的新控件

时间:2023-03-09 09:15:09
Windows Phone8.1 SDK中的新控件
  • 前言

     WP8.1对开发者的影响要远大于对用户的影响。这篇博客就来一起看看哪些WP8.0中的控件被移除或替换,这些控件的介绍在MSDN上都非常的详细,所以这里只给出一些简单的介绍,来对比8.1和8.0中的控件的差别,如果想要看控件的具体使用方法可以在MSDN上查看,之后也会给出MSDN上的链接。

  • Panorama VS Hub

上一篇博客中我们安装完VS2013UPDATE2RC之后,首先看到的一个变化就是Hub App。原有的Panorama控件已经不见了,Hub控件用HubSection替换掉原来的PanoramaItem,HubSection必须指定DataTemplate属性。两个控件的用法是非常类似的,需要提到的一点不同是,Hub控件如果在只有不会HubSection的情况下不会像Panorama那样可以一直朝一个方向滑,如果大于两个那就和Panorama一样了,一些属性的名称也有变化,详细信息

<Hub Header="My header">
<HubSection Header="My sub header">
<DataTemplate>
<Grid />
</DataTemplate>
</HubSection>
<HubSection Header="My sub header 2">
<DataTemplate>
<Grid />
</DataTemplate>
</HubSection>
</Hub>
  • LongListSelector VS SemanticZoom

在WP8.1中除了使用LLS展示分组的列表,还可以使用SemanticZoom。SemanticZoom原是Win8中的控件,它不是列表控件但它却是非常有用的呈现列表的控件。它有两个状态,ZoomedInView和ZoomedOutView。顾名思义,使用这两个状态就可以做出LLS的效果,在ZoomedInView时使用ListView展示列表,在ZoomedOutView时使用GridView来展示分组。不光如此,SemanticZoom还可以应用在地图和地点集合的示例中,详细信息

<SemanticZoom>
<SemanticZoom.ZoomedInView>
<ListView/>
</SemanticZoom.ZoomedInView>
<SemanticZoom.ZoomedOutView>
<GridView/>
</SemanticZoom.ZoomedOutView>
</SemanticZoom>
  • WebBrowser VS WebView

对于开发者来说可能仅仅是改变了名字,其实在底层做了很多工作。WebBrowser是一个真正的Browser浮在所有页面之上,带来了很多问题。但WebView是集成在XAML虚拟树中的控件,甚至可以轻松的将XAML和HTML混合在一起使用,详细信息

  • DrawingSurface and DrawingSurfaceBackgroundGrid

在WP8.1中我们应该使用Windows8.1中的控件SwapChainPanel,详细信息

  • MultiScaleImage

在WP8.1中这个控件被申明为不在被推荐使用。但在WP8.1中制作图片应用时这个控件依然可以使用。

  • RichTextBox is now RichTextBlock

这个控件仅仅是改了个名字,详细信息

<RichTextBlock>
<Paragraph>
Some text with bold <Bold>in it</Bold>
</Paragraph>
</RichTextBlock>
  • AutoSuggestBox

这是一个全新的控件,Windows8.1中也没有。有很多第三方的控件也实现了自动补全的功能,这次推出一个官方的版本。推荐的内容不再仅仅是文本,可以是任何类型的控件,但出于性能问题的考虑还是要保证推荐内容的尽可能的轻量,详细信息

<AutoSuggestBox TextChanged="AutoSuggestBox_TextChanged"
SuggestionChosen="AutoSuggestBox_SuggestionChosen" ItemsSource="{Binding Suggestions}">
<AutoSuggestBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
</AutoSuggestBox>
private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
{
Suggestions.Clear();
Suggestions.Add(sender.Text + "");
Suggestions.Add(sender.Text + "");
}
}
private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
{
// Add text to AutoSuggestBox
}
  • CaptureElement

这个控件是Windows和WP共享控件,通过这个控件可以做一个摄像头的查看器,可以任意设置控件的大小,详细信息

<CaptureElement x:Name="myCaptureElement"/>

private MediaCapture mediaCaptureMgr = null;
private async void ShowPreview()
{
if (mediaCaptureMgr == null)
{
mediaCaptureMgr = new MediaCapture();
await mediaCaptureMgr.InitializeAsync(); myCaptureElement.Source = mediaCaptureMgr;
await mediaCaptureMgr.StartPreviewAsync();
}
}
  • ProgressRing

在之前介绍如何自定义控件的时候向大家推荐了一个进度环的控件,现在在WP8.1中我们可以使用Windows的原生进度环控件了,详细信息

  • 总结

   WP8.1中还有很多新的控件比如,Frame,ListView,GridView,ToggleSwitch其实用法都很简单就不一一介绍了。