我有这样的网格:
<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时,我的网格在我的viewmodel上创建的对象正确完成。 当我取消注释方法时,列&#34; Vl。&#34;它的价值如&#34; 93.5&#34;,&#34; 108.9&#34; ...全部用值&#34;无限制&#34;来实现。
这已经预料到了。 我只想要值>&gt;的单元格100.0转向字符串&#34;无限制&#34;。例如:
有没有办法做到这一点?
答案 0 :(得分:0)
您可以在数据绑定中为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"/>
其中“converter”是在XAML窗口/用户控件顶部声明的命名空间别名:
xmlns:converters="clr-namespace:MyApplication.Converters"
然后通过XAML引用数据绑定中的转换器:
{Binding VI_Value, Converter={StaticResource UnlimitedNumberConverter}}