Для двусторонней привязки требуется путь или xpath - PullRequest
1 голос
/ 02 октября 2011

Я хочу увеличить значение Progress-bar на основе двух текстовых полей Text. Я написал этот XAML, но при выполнении MultiBinding в ProgressBar.Value

возникает ошибка «Для двусторонней привязки требуется путь или xpath».
<Window.Resources>
    <local:Class1 x:Key="ConverterM"/>
</Window.Resources>

<TextBox Height="23" HorizontalAlignment="Left" Margin="157,59,0,0"
         Name="textBox1"  VerticalAlignment="Top" Width="120" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="157,108,0,0"
         Name="textBox2" VerticalAlignment="Top" Width="120" />
<ProgressBar Height="24" HorizontalAlignment="Left" Margin="120,160,0,0"
             Name="progressBar1" VerticalAlignment="Top" Width="243" >
    <ProgressBar.Value>
        <MultiBinding Converter="{StaticResource ConverterM}">
            <Binding />
            <Binding ElementName="textBox1" Path="Text" />
            <Binding ElementName="textBox2" Path="Text" />
        </MultiBinding>
    </ProgressBar.Value>
</ProgressBar>

Значение конвертера:

public class Class1 : IMultiValueConverter
{
    public object Convert(object[] values,
                          Type targetType,
                          object parameter,
                          System.Globalization.CultureInfo culture)
    {
        if (values[1] != null && values[2]!=null)
        {
            if (((string)values[1]).Length==((string)values[2]).Length)
            {
                return 5.0;
            }
        }
        else
        {
            return 0.0;
        }
    }

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

Ответы [ 2 ]

2 голосов
/ 02 октября 2011

Я думаю, что <Binding /> не обязательно.попробуй его удалить и поменяй индексы в конвертере.

0 голосов
/ 19 октября 2015

Для двусторонней привязки требуется путь или xpath

Это происходит, когда вы не установили Path= на binding.По умолчанию WPF binding примет участие Path= на default.

. Чтобы избежать этого, вам нужно указать Path для каждого Binding, указанного в MultiBinding.здесь в вашем случае была пустая привязка, для которой не определен путь, поэтому у вас есть опыт с вышеуказанной ошибкой.

Я сталкивался с той же проблемой, но в принятом ответе не говорится, что это за ошибка, поэтомудумал поделиться этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...