gpt4 book ai didi

c# - GridViewColumn 中的 WPF 转换器 - 保留 ConvertBack-Method 的值并为每一行拥有自己的 Binding-Instance

转载 作者:行者123 更新时间:2023-11-30 12:56:10 26 4
gpt4 key购买 nike

我有一个 GridView,其中一些列显示 Material 。 viewmodel 值都以 kg 为单位保存,对于某些 View 应将其转换并显示为升。这可以通过使用 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();
}
}

我假设这会导致每个绑定(bind)都有一个单独的实例 - 但事实并非如此。我怎样才能做到这一点?

编辑:正如 mm8 在 this answer 中所建议的那样问题出在绑定(bind)实例上。在其单元格模板中定义 GridViewColumn 的绑定(bind)时,我将每列只点击一次构造函数。所以问题是我怎样才能改变它 - 这甚至可能吗?

最佳答案

I assumed this will result in a separate instance for each Binding - it does not.

下面肯定会创建一个新实例 MyConverter 类:

Converter = new MyConverter();

确保您正在为每个绑定(bind)创建 MyBinding 类的新实例。

您还可以像这样在 XAML 中创建转换器的新实例:

<TextBlock>
<TextBlock.Text>
<MultiBinding>
<MultiBinding.Converter>
<local:MyConverter />
</MultiBinding.Converter>
<Binding Path="Test" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>

关于c# - GridViewColumn 中的 WPF 转换器 - 保留 ConvertBack-Method 的值并为每一行拥有自己的 Binding-Instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762497/

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