【问题标题】:MultiValueConverter object[] ConvertBackMultiValueConverter 对象[] ConvertBack
【发布时间】:2016-08-18 08:49:38
【问题描述】:

我正在研究转换器,我很新。我不知道,如何从 xaml 绑定中获取值。可能会写我的代码。

在我的转换代码中,我有点困惑。对于 Double B,我需要 XAML 中 B 的值

<TextBlock Text="Offset X [px]"
           Style="{StaticResource StdTextBlockStyle}" />
    <TextBox x:Uid="TextBox_1" 
             Style="{StaticResource StdTextBoxStyle}" >
        <TextBox.Text>
            <MultiBinding Converter="{StaticResource Conv}">
                <Binding Path="B" />
                <Binding Path="A" />
            </MultiBinding>
        </TextBox.Text>
   </TextBox>
<TextBlock />

//C#代码 //

    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
       double B = (double)values[0];
       double A = (double)values[1];
       double C = A-B;
       return C;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
       {

            double C = (double)value;    
            double B = // I DON'T KNOW HOW TO GET VALUE FOR B. B is from XAML// ???

            object[] ret = new object[1];    
            ret[0] = C + B;
            return ret;

【问题讨论】:

  • 你用的是什么转换器接口?
  • 对不起,我忘记添加了。我正在使用多转换器
  • 我猜你收到的价值还是 A+C ?
  • 你能解释一下你到底想做什么吗?
  • 我猜this 会回答你的问题。

标签: c# wpf xaml


【解决方案1】:

你应该明白,那导致ConvertBack它是组合

 double B = (double)values[0];
 double A = (double)values[1];

您在Convert 中定义。 MultiValueConverter 中转换的主要思想是定义您自己的逻辑,您希望如何查看这些值。这意味着你需要定义你的逻辑来计算这个数组。 根据您的Convert 功能:

double C = A-B;

我们在ConvertBack:

double B=A-C;
double A=C+B;

我们无法计算A和B来定义

Array[] x = new []{ A, B };

因为我们在这里有两个未知变量的等式。 抱歉,我不相信这个表达式可以转换回来。

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 2016-05-29
    • 2011-08-17
    • 2014-05-01
    • 2013-01-31
    • 2019-12-25
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多