MultiValueConverter object [] ConvertBack

时间:2016-08-18 08:49:39

标签: c# wpf xaml

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

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

的值
<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#Code //

    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;

1 个答案:

答案 0 :(得分:0)

您应该明白,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 };

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