【问题标题】:WPF: RadGridView set template for some cellsWPF:RadGridView 为某些单元格设置模板
【发布时间】:2015-10-19 17:17:30
【问题描述】:

我有一个这样的网格:

<telerik:RadGridView x:Name="DataG"
 ItemsSource="{Binding CamposUsu}"
 SelectedItem="{Binding Selected}"
 CanUserReorderColumns="True"
 CanUserResizeColumns="True"
 CanUserSortColumns="False"
 SelectionUnity="FullRow"
 IsReadyOnly="True"
 AutoGenerateColumns="False"
 Loaded="DataG_Loaded" />

.cs 文件中的 DataG_Loaded 方法:

private void DataG_Loaded(object sender, RoutedEventesArgs e)
{
   DataTemplate labelTemplate = new DataTemplate();

            FrameworkElementFactory label = new FrameworkElementFactory(typeof(Label));
            label.SetValue(Label.ContentProperty, "Unlimited");

            labelTemplate.VisualTree = label;

            labelTemplate.Seal();

            this.DataG.Columns[7].CellTemplate = labelTemplate; 
            //this column 7 is a column called "Vl." with double values
}

好吧,当我评论 DataG_Loaded 方法时,我在视图模型上创建的对象正确地实现了我的网格。 当我取消注释该方法时,列“Vl”。具有诸如“93.5”、“108.9”之类的值...都以“Unlimited”值实现。

这是意料之中的。 我只希望值大于 100.0 的单元格变成字符串“Unlimited”。例如:

有什么办法吗?

【问题讨论】:

    标签: c# wpf telerik grid radgridview


    【解决方案1】:

    您可以对 XAML 中该列的数据绑定使用值转换器,而不是使用网格的 Loaded 事件。

    示例

    像这样创建一个继承IValueConverter 的新类:

    public class UnlimitedNumberConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
           if (((float)value) > 100)
               return "Unlimited";
    
            return value;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new Exception("The method or operation is not implemented.");
        }
    }
    

    将资源添加到 XAML 以访问转换器:

    <converters:UnlimitedNumberConverter x:Key="UnlimitedNumberConverter"/>
    

    其中“转换器”是在 XAML 窗口/用户控件顶部声明的命名空间别名:

    xmlns:converters="clr-namespace:MyApplication.Converters"
    

    然后通过 XAML 在网格上的数据绑定中引用转换器:

    {Binding VI_Value, Converter={StaticResource UnlimitedNumberConverter}}
    

    【讨论】:

    • @Evil Str,如果这对您有帮助或您仍需要帮助,请告诉我。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2012-11-25
    相关资源
    最近更新 更多