gpt4 book ai didi

wpf - 如何更改 RadGridView 中特定单元格的格式

转载 作者:行者123 更新时间:2023-12-03 10:16:31 25 4
gpt4 key购买 nike

所以我有一个动态的 RadGridView。这意味着我以编程方式将列添加到控件中。基本上是这样的:

for (int i = 0; i < length; i++)
{
Binding b = new Binding(string.Format("Collection[{0}].ValueIWant", i));
binding.StringFormat = "{0:0.##}";
GridViewDataColumn column = new GridViewDataColumn()
{
Header = HeaderFor(i),
DataMemberBinding = b,
DataType = typeof(double?)
};

Control.columns.Add(column);
}

现在我需要添加新的行来显示行 1 and 2 之间的百分比。 , 2 and 3等等。

我已经设法做到了,但我不确定我将如何设法专门为这些单元格而不是整个列更改 String.format。

想到了 CellTemplateSelector 但我不确定这是一个好主意,因为这可能意味着我必须再次设置绑定(bind),不知道 i 的值等等。另外我只想更改绑定(bind)上的 string.format 。

当我将数字作为双倍操作(0,5 是 50%,50 是 5000%)时,我想我也必须屏蔽输入。不确定 String.Format 是否也适合我,或者我是否应该使用 RadMaskedInput

最佳答案

使用 IValueConverter将每一行的列值转换为其适当的表示形式。因此,对于计算列上的绑定(bind),请使用:

// bind to the row data itself, not any specific property
Binding b = new Binding();
b.Converter = new RowToFormattedValueConverter

这会将完整的行数据发送到转换器;因此您应该能够使用该行的一些现有属性来确定它是哪种类型(常规或百分比),或者添加一个额外的隐藏属性/列来明确指定它。然后转换器看起来像这样:
public class RowToFormattedValueConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var rowData = (MyModelType)value;
string formattedResult;
if (rowData.IsPerecentageRow)
{
formattedResult= string.Format("{0:P1}", rowData.ValueIWant);
}
else
{
formattedResult= string.Format("{0:0.##}", rowData.ValueIWant);
}
return formattedResult;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

关于wpf - 如何更改 RadGridView 中特定单元格的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com