我有一个显示材料的GridView
列。 viewmodel值全部以kg保存,因为某些视图应转换并将其显示为升。使用IMultiValueConverter
可以轻松完成。{/ p>
public object Convert(object[] values, ...){
var valueInKg = (double)values[0];
var density = (double)values[1];
return valueInKg/density;
}
现在我在进行后向转换方面遇到了问题。我试图将输入值(密度)存储在转换器中,但确实有一个实例,因此有时会出现错误的密度值。我找到this x:shared="false" approach,但想要将转换器设置为从System.Windows.Data.MultiBinding
派生的类。
public class MyBinding : MultiBinding {
public MyBinding(){
Converter = new MyConverter();
}
}
我认为这将导致每个Binding的单独实例 - 它不会。我怎样才能做到这一点?
编辑:
正如this answer中mm8所建议的那样,问题在于绑定实例。在单元格模板中定义GridViewColumn
上的绑定时,每列只会触发一次构造函数。所以问题是我怎样才能改变它 - 它甚至可能吗?
答案 0 :(得分:0)
我认为这将导致每个Binding的单独实例 - 它不会。
以下肯定会创建MyConverter
类的新实例:
Converter = new MyConverter();
确保为每个绑定创建MyBinding
类的新实例。
你也可以在XAML中创建一个新的转换器实例,如下所示:
<TextBlock>
<TextBlock.Text>
<MultiBinding>
<MultiBinding.Converter>
<local:MyConverter />
</MultiBinding.Converter>
<Binding Path="Test" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
答案 1 :(得分:0)
关于将值保留在 AreaReference a=new AreaReference("A1:G5667", null);
CellReference b=new CellReference("A1");
XSSFSheet pivot_sheet=workbook.createSheet("Pivot_table");
XSSFPivotTable pivotTable = pivot_sheet.createPivotTable(a,b,spreadsheet);
pivotTable.addRowLabel(6);
pivotTable.addRowLabel(0);
pivotTable.addRowLabel(2);
pivotTable.addRowLabel(3);
pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 4,"Sum");
方法中:如果我对您的理解正确,则可以在ConvertBack
函数中使用Binding.DoNothing
。示例:
ConvertBack