加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何计算WPF绑定中的值

发布时间:2020-12-15 04:35:07 所属栏目:百科 来源:网络整理
导读:我有一个应用程序,它使用两个滑块来生成代码中其他地方使用的产品.我想要的是将产品价值绑定到文本框或工具提示,例如,看起来像“10 x 15 = 150”. 第一部分很容易,看起来像这样: TextBlock.Text MultiBinding StringFormat="{}{0} x {1}" Binding ElementNa
我有一个应用程序,它使用两个滑块来生成代码中其他地方使用的产品.我想要的是将产品价值绑定到文本框或工具提示,例如,看起来像“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,CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

和重要的

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

谢谢!

解决方法

而不是使用StringFormat创建一个转换器.这样的东西
public class MultiplyFormulaStringConverter : IMultiValueConverter
{
    public object Convert(object[] values,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}",rightPart);

        return result;
    }

    public object[] ConvertBack(object value,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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读