我想根据两个文本框的文本增加进度条值。我写了这个XAML,但是当我在ProgressBar.Value中进行MultiBinding时,出现了“双向绑定需要路径或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();
}
}
答案 0 :(得分:2)
我认为<Binding />
不是必需的。尝试删除它并更改转换器中的索引。
答案 1 :(得分:0)
双向绑定需要路径或xpath
如果您未在Path=
上设置binding
,则会发生这种情况。默认情况下,WPF binding
会将Path=
部分移至default
。
为避免这种情况,您需要为Path
中指定的每个Binding
提供MultiBinding
。在你的情况下,有一个空的绑定没有路径定义,这就是为什么你有上述错误的经验。
我遇到了同样的问题,但接受的答案没有说出错误是什么,所以想到分享这个。