我有一个GridView,其中一些列显示材料. viewmodel值全部以kg保存,因为某些视图应转换并将其显示为升.使用IMultiValueConverter可以轻松完成.
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(); } }
我假设这将导致每个绑定的单独实例 – 它不会.我怎样才能做到这一点?
编辑:
正如mm001在this answer中所建议的那样,问题在于绑定实例.在单元格模板中定义GridViewColumn上的绑定时,每列只会触发一次构造函数.所以问题是如何改变它 – 它甚至可能吗?
解决方法
I assumed this will result in a separate instance for each Binding – it does not.
以下肯定会创建一个MyConverter类的新实例:
Converter = new MyConverter();
确保为每个绑定创建MyBinding类的新实例.
你也可以在XAML中创建一个新的转换器实例,如下所示:
<TextBlock> <TextBlock.Text> <MultiBinding> <MultiBinding.Converter> <local:MyConverter /> </MultiBinding.Converter> <Binding Path="Test" /> </MultiBinding> </TextBlock.Text> </TextBlock>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。