如何在Windows Phone手机上调试Data Binding问题
文章信息
这篇文章将会介绍如何在数据绑定到控件之前调试所绑定的数据的问题
介绍
Data binding 允许你在XAML中绑定需要的数据. 但是这种绑定非常的直接,而当你的绑定出现问题后,很难定位到问题的所在.
最简单的方法,是创建一个Value Convertor(IValueConverter), 这个Convertor会在数据被访问前获取到数据 .只要在Convertor中设置断点,就可以确认数据是否传输正确,同时,包含所需要的数据.
可执行的例子
首先,我们来创建一个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()中,你可以看到数据的到达.


(no comments yet)