gpt4 book ai didi

c# - 如何计算 WPF 绑定(bind)中的值

转载 作者:太空狗 更新时间:2023-10-29 17:38:28 27 4
gpt4 key购买 nike

我有一个应用程序,它使用两个 slider 来生成在代码中其他地方使用的产品。我想要的是将产品值绑定(bind)到文本 block 或工具提示,例如,看起来像“10 x 15 = 150”。

第一部分很简单,如下所示:

<TextBlock.Text>
<MultiBinding StringFormat="{}{0} x {1}">
<Binding ElementName="amount_slider" Path="Value" />
<Binding ElementName="frequency_slider" Path="Value"/>
</MultiBinding>
</TextBlock.Text>

但是有什么简单的方法可以将产品放入其中呢?

使用 Pavlo Glazkov 的解决方案,我将其修改为如下所示:

public class MultiplyFormulaStringConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var doubleValues = values.Cast<double>().ToArray();
double x = doubleValues[0];
double y = doubleValues[1];
var leftPart = x.ToString() + " x " + y.ToString();
var rightPart = (x * y).ToString();
var result = string.Format("{0} = {1}", leftPart, rightPart);
return result;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

最重要的是

<Window.Resources>
<local:MultiplyFormulaStringConverter x:Key="MultiplyFormulaStringConverter"/>
</Window.Resources>

谢谢!

最佳答案

而不是使用 StringFormat 创建一个转换器。像这样:

public class MultiplyFormulaStringConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var doubleValues = values.Cast<double>().ToArray();

var leftPart = string.Join(" x ", doubleValues);

var rightPart = doubleValues.Sum().ToString();

var result = string.Format("{0} = {1}", leftPart, rightPart);

return result;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

<TextBlock.Text>
<MultiBinding Converter="{StaticResource MultiplyFormulaStringConverter}">
<Binding ElementName="amount_slider" Path="Value" />
<Binding ElementName="frequency_slider" Path="Value"/>
</MultiBinding>
</TextBlock.Text>

关于c# - 如何计算 WPF 绑定(bind)中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057738/

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