MultiValueConverter object[] ConvertBack

本文关键字:ConvertBack object MultiValueConverter | 更新日期: 2023-09-27 18:02:49

我在转换器工作,我是很新的。我不知道,如何从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;

MultiValueConverter object[] ConvertBack

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

因为这里有两个未知变量的方程。对不起,我不相信这个表达式是可以转换回来的。