开发者

Two-way binding requires path or xpath

I want to increase Progress-bar value based on two textbox's Text. I wrote this XAML but there is an error "Two-way binding requires path or xpath" when I do MultiBind开发者_如何学运维ing in ProgressBar.Value

<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>

Value Converter:

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();
    }
}


I think that <Binding /> is not necessary. try to delete it and change indexes in converter.


Two-way binding requires path or xpath

This happens when you haven’t set the Path= on binding. By default WPF binding will take the Path= part by default.

To avoid this you need to give Path for each Binding you specify in MultiBinding. here in your case there was an empty binding which has no Path defined thats why you have experience with the above error.

I have came across the same issue but the accepted answer does not say what the error is, So thought of sharing this.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜