DataGrid的Template的问题
最近Silverlight 5 Beta发布,作为专注于Silverlight的开发人员,我还是很高兴的,至少证明Sl依然还在完善,还在发展。
闲话少说,这篇帖子主要是解决DataGrid开发中常见到的问题:
当DataGrid出现ScrollView时,如果对其进行拖动,你会发现DataGrid中的CheckBox和Expander会发生错乱的情形
通过对DataGrid的Template中的ScrollView中添加一个DataGridRowsPresenter可以有效的解决该问题:
<ScrollViewer >
<sdk:DataGridRowsPresenter x:Name="RowsPresenter" />
</ScrollViewer>
具体代码就不贴了,下载地址:DataGridScrollView.rar
将DataGrid的Style去掉进行测试即可
在实际情况中,我们可能需要对记录为0时进行处理,这里给出一种方式
这里依然是修改DataGrid的Template,找到DataGridRowsPresenter部分的XAML
<sdk:DataGridRowsPresenter x:Name="RowsPresenter" Grid.ColumnSpan="2" Grid.Row="1" />将其替换为:
<Grid Grid.ColumnSpan="2" Grid.Row="1" >
<sdk:DataGridRowsPresenter x:Name="RowsPresenter"/>
<TextBlock Text="没有相关的记录"
Visibility="{Binding ElementName=RowsPresenter, Path=Children.Count, Converter={StaticResource noRecordsConverter}}"
HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="12"/>
</Grid>
可以看到是对DataGridRowsPresenter对象的Children属性进行的绑定
值转换器部分的代码:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.ToString() == "0" ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
本篇就写到这里,希望这2个实际开发中很有用的技巧给你思路上的帮助.