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时进行处理,这里给出一种方式

         image

       这里依然是修改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个实际开发中很有用的技巧给你思路上的帮助.

posted @ 2011-04-19 09:27  ringgo  阅读(1871)  评论(5编辑  收藏  举报