【问题标题】:Silverlight 4 DataGrid edit null value's cellSilverlight 4 DataGrid 编辑空值的单元格
【发布时间】:2011-08-10 19:23:59
【问题描述】:

我正在创建一个 DataGrid,我将网格的 ItemsSource 设置为 WCF 请求结果。我有一些字符串的空值,我希望能够为这些空值输入值。我编辑/保存预填充的非空值没有问题,但我无法修改已返回为空的单元格的值。我怎样才能做到这一点?

【问题讨论】:

    标签: silverlight datagrid


    【解决方案1】:

    您可以在绑定中使用转换器,将空值转换为空字符串。这是转换器的一些代码:

    public class NullToEmptyStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value == null ? string.Empty : value;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value == string.Empty ? null : value;
        }
    }
    

    【讨论】:

    • 我将所有非空值都调用到转换器中,但空值不会进入转换器。我在 convert 和 convertback 方法中有断点,但它们不会为 null 值触发,所以它没有用。
    • 我有 wcf 调用返回项目,并在完成的事件上设置我的网格的 ItemsSource。网格正确显示它们(我有自定义列,例如<sdk:DataGridTextColumn Binding="{Binding Title, Converter={StaticResource NullStringConverter}}" Header="Title"></sdk:DataGridTextColumn>,如果这会改变任何内容),其中 NullStringConverter 是在 App.xaml 中定义为静态资源键的值转换器的实例。转换器将为非空值触发,但不会为空值触发,从而使转换器无用。
    • ItemsSource 的结构是什么? (WCF 服务请求)似乎我错过了问题的关键部分,因为我从未见过会命中某些绑定而不是其他绑定的转换器。
    • 它是 ListCategory 定义为 List<Category> categories; 和(当 wcf 调用完成时 categories= e.Result 和之后在另一个方法 CategoryGrid.ItemsSource = categories; 和我验证列表返回正确的数据当我设置 ItemsSource 时,我可以正确显示网格,我也可以使用 RowEditEnded 事件编辑/保存。但问题是空值。
    • 没问题。我以前花时间在更琐碎的事情上,只是为了以后踢自己。很高兴它现在有效。 :)
    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2010-12-09
    相关资源
    最近更新 更多