首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

datagrid绑定有关问题

2012-03-27 
datagrid绑定问题xaml:XML codedata:DataGrid x:NamemyImgs AutoGenerateColumnsFalsedata:DataG

datagrid绑定问题
xaml:

XML code
<data:DataGrid x:Name="myImgs" AutoGenerateColumns="False">            <data:DataGrid.Columns>                <data:DataGridTemplateColumn Header="缩略图">                    <data:DataGridTemplateColumn.CellTemplate>                        <DataTemplate>                            <Image Resources="{Binding Name}" Width="80" Height="80"></Image>                        </DataTemplate>                    </data:DataGridTemplateColumn.CellTemplate>                                    </data:DataGridTemplateColumn>                <data:DataGridTextColumn Header="文件名" Binding="{Binding Name}"></data:DataGridTextColumn>                <data:DataGridTextColumn Header="大小(byte)" Binding="{Binding Length}"></data:DataGridTextColumn>            </data:DataGrid.Columns>        </data:DataGrid>


C#
C# code
 OpenFileDialog dialog = new OpenFileDialog();            dialog.Multiselect = true;            dialog.ShowDialog();            myImgs.ItemsSource = dialog.Files;

缩略图那些的Binding属性该怎么写?
还有大小那列单位是byte我想换算成kb,Binding 属性该怎么写?


[解决办法]
既然是Image,那么要显示图片的话,使用Image控件的Source属性,对其进行绑定即可。

至于你说的大小转换的话,最好写一个转换器Converter
C# code
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using System.Globalization;using System.Windows.Data;#region 为百分数定义转换器    //定义一个转换类 并被页面引用为资源      /*    * IValueConverter - 值转换接口,将一个类型的值转换为另一个类型的值。它提供了一种将自定义逻辑应用于绑定的方式    *     Convert - 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法    *     ConvertBack - 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法   */    /// <summary>      /// 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法      /// </summary>      /// <param name="value">转换之前的值</param>      /// <param name="targetType">转换之后的类型</param>      /// <param name="parameter">转换器所使用的参数</param>      /// <param name="culture">转换器所使用的区域信息</param>      /// <returns>转换后的值</returns>      public class ByteToKbConverter : IValueConverter    {        public object Convert(object value,                           Type targetType,                           object parameter,                           CultureInfo culture)        {            double d = (double)value;            return Math.Round(d/1024, 2).ToString();         }        /// <summary>          /// 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法          /// </summary>          /// <param name="value">转换之前的值</param>          /// <param name="targetType">转换之后的类型</param>          /// <param name="parameter">转换器所使用的参数</param>          /// <param name="culture">转换器所使用的区域信息</param>          /// <returns>转换后的值</returns>          public object ConvertBack(object value,                                  Type targetType,                                  object parameter,                                  CultureInfo culture)        {            //反向转换            string strValue = value.ToString();            //...            return value;        }    } #endregion然后在DataGrid绑定的时候,使用转换器即可 首先在需要使用转换的页面中加入下语句:xmlns:local="clr-namespace:XXX"  //XXX是你Silverlight的项目命名空间然后添加:<UserControl.Resources>        <local:DateTimeConverter x:Key="ByteToKbConverter" /></UserControl.Resources><sdk:DataGrid Margin="0" AutoGenerateColumns="False" x:Name="dg">                <sdk:DataGrid.Columns>                    <sdk:DataGridTemplateColumn Header="大小(byte)">                        <sdk:DataGridTemplateColumn.CellTemplate>                            <DataTemplate>                                <TextBlock Text="{Binding Length,Convert={StaticResource ByteToKbConverter}}"></TextBlock>                            </DataTemplate>                        </sdk:DataGridTemplateColumn.CellTemplate>                    </sdk:DataGridTemplateColumn>            </sdk:DataGrid.Columns></sdk:DataGrid> 

热点排行