Namespaces
Variants
Actions
Revision as of 08:13, 19 October 2012 by hamishwillee (Talk | contribs)

如何在Windows Phone手机上调试Data Binding问题

Jump to: navigation, search
WP Metro Icon Chinese.png
文章信息

文章
翻译:
最后由 hamishwillee 在 19 Oct 2012 编辑

这篇文章将会介绍如何在数据绑定到控件之前调试所绑定的数据的问题

介绍

Data binding 允许你在XAML中绑定需要的数据. 但是这种绑定非常的直接,而当你的绑定出现问题后,很难定位到问题的所在.

最简单的方法,是创建一个Value Convertor(IValueConverter), 这个Convertor会在数据被访问前获取到数据 .只要在Convertor中设置断点,就可以确认数据是否传输正确,同时,包含所需要的数据.

Tip.png
Tip: 如果Convertor没有被触发,那么,在数据绑定到控件之前就已经发生了错误, 可能是数据源的定义或者是不正确的DataContext。

可执行的例子

首先,我们来创建一个ListBox的例子:

<ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="MainListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432" Height="78">
<TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

让我们来创建一个派生自借口IValueConverter的Convertor:

public class DatabindingDebugConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value;
}
 
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return value;
}
}

然后,你可以定义这个Convertor作为静态资源到XAML中:

<phone:PhoneApplicationPage.Resources>
<local:DataBindingDebugConverter x:Key="DatabindingDebugConverter"/>
</phone:PhoneApplicationPage.Resources>

同时,需要把Convertor绑定到指定的Binding上:

<TextBlock Text="{Binding LineOne, Converter={StaticResource DataBindingDebugConverter}}" 
TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>

注意,你必须已经应用了local作为xmlns:

xmlns:local="clr-namespace:EncryptionSample"

接着在方法 Convert()中,你可以看到数据的到达.

139 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved