ListBox变化在Beta 2中,ListBox移除了如下属性和事件:
SelectedItemsProperty
SelectionModeProperty
SelectedItems
SelectionMode
OnGotFocus(RoutedEventArgs)
OnItemContainerStyleChanged(Style, Style)
OnKeyDown(KeyEventArgs)
OnLostFocus(RoutedEventArgs)
OnSelectedItemsChanged(IList, IList)
OnIsSelectionActiveChanged(Boolean, Boolean)
OnSelectedIndexChanged(Int32, Int32)
OnSelectedItemChanged(Object, Object)
OnSelectionChanged(SelectionChangedEventArgs)
OnSelectionModeChanged(SelectionMode, SelectionMode)
对于ListBoxItem移除了如下属性和事件:
OnGotFocus(RoutedEventArgs)
OnLostFocus(RoutedEventArgs)
OnMouseEnter(MouseEventArgs)
OnMouseLeave(MouseEventArgs)
OnMouseLeftButtonDown(MouseButtonEventArgs)
IsMouseOver
同时移除了ListBox的选择模式枚举类SelectionMode,也就意味着在Beta 2中ListBox只能实现单选,除非自行做扩展。其实在Beta 1中SelectionMode也只有一个值Single,Beta 2中的ListBox提供了SelectedItem属性和SelectionChanged事件。
WatermarkedTextBox控件在Beta 1中加入的控件WatermarkedTextBox控件到了Beta 2中被移除,所以如果你在Beta 1的应用程序中使用了该控件需要用TextBox来替换。不过好在我们已经有了Beta 1中WatermarkedTextBox控件的源码,在Beta 2下重新实现一个也不是一件什么难事。
新的TabControl在Beta 2中添加了新的TabControl控件,但是该控件放在System.Windows.Controls.Extended程序集中,使用时需要添加命名空间。
DataGrid控件非常幸运的是如果我们在Beta 1的应用程序中使用了DataGrid控件,变化的地方并不多,而是新增了很多有用的功能。如实现排序等。
扩展控件程序集System.Windows.Controls.Extended仍然保留,其中包括了四个控件,在使用的时候需要对这些控件导入命名空间。
Calendar
DatePicker
GridSplitter
TabControl
如:

Code
<UserControl
xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Extended"
x:Class="TerryLee.SilverlightBeta2Example.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300"
FontSize="16"
FontFamily="Trebuchet MS">
<Grid x:Name="LayoutRoot" Background="White">
<my:DatePicker x:Name="myDatePicker"></my:DatePicker>
<my:Calendar x:Name="myCalendar"></my:Calendar>
</Grid>
</UserControl>
Visual State Manager在Silverlight 2 Beta2中引进的一个新东西是"Visual State Manager(视觉状态管理器)" (VSM),该功能将极大地方便你建造交互性的控件模板。VSM引入了你可在控件模板中利用的2个基本概念:"视觉状态(Visual States)" 和 "状态迁移(State Transitions)"。例如,象按钮这样的控件为自己定义了多个视觉状态: "Normal(正常)", "MouseOver(鼠标之下)", "Pressed(按下)", "Disabled(不可用)", "Focused(获取焦点)", "Unfocused(不具焦点)"。在Blend中的模板编辑模式下,设计师现在可以轻松地编辑按钮在每个特定状态下的外观,以及设置迁移规则来控制从一个状态迁移到另一个状态时动画效果应该运行的时间。然后在运行时,Silverlight会动态地运行合适的动画故事板来把控件从一个状态平滑地过渡到另一个状态。(ScottGu)
网络通信WCF通信在Beta 2中,WCF现在支持双工通信服务了,但是仍然只支持basicHttpBinding绑定。这将促成一个非常干净的编程模型,允许服务器将消息“推送”到Silverlight客户端,而不用开发人员手工轮询服务器端的变动。这个编程模型在多种场景中都非常有用,包括即时消息/聊天应用,象股票行情和交易这样的监测/更新应用等。
WebClient和HttpWebRequestBeta 2中允许使用WebClient上传数据,以及允许我们在后台线程上调用WebClient或者HttpWebRequest,在异常处理上也需要做一些改动。
Beta 1

Code
public void Download()
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(
client_DownloadStringCompleted);
try
{
client.DownloadStringAsync(new Uri("http://Contoso.com/myfile.txt"));
}
catch (SecurityException ex)
{
// handle synchronous exception
}
}
void client_DownloadStringCompleted(
object sender, DownloadStringCompletedEventArgs e)
{
// Set the text content of a control to the result
MyControl.Text = e.Result;
}
Beta 2

Code
public void Download()
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(
client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri("http://Contoso.com/myfile.txt"));
}
void client_DownloadStringCompleted(
object sender, DownloadStringCompletedEventArgs e)
{
try
{
// Set the text content of a control to the result
MyControl.Text = e.Result;
}
catch (SecurityException ex)
{
// handle asynchronous exception
}
}