C# WPF:BindingExpression生成的值对目标无效
无法理解这一点,我正在尝试使此模板尽可能多功能。我在尝试将文本块居中时遇到以下错误,水平对齐不起作用 System.Windows.Data错误:5:BindingExpression生成的值为 对目标属性无效。;Value='0' BindingExpression:Path=ActualWidth;DataItem='Grid'(Name='PathGrid'); 目标元素是“TextBlock”(Name='PathPercentage');目标属性 是“FontSize”(类型为“Double”) System.Windows.Data错误:5:BindingExpression生成的值为 对目标属性无效。;值='-6-6-6-6' MultiBindingExpression:目标元素为“TextBlock” (Name='PathPercentage');目标属性为“Margin”(类型 ‘厚度’) System.Windows.Data错误:5:BindingExpression生成的值为 对目标属性无效。;值='-17-17-17-17' MultiBindingExpression:目标元素为“TextBlock” (Name='PathPercentage');目标属性为“Margin”(类型 ‘厚度’) System.Windows.Data错误:5:BindingExpression生成的值为 对目标属性无效。;Value='83' MultiBindingExpression:目标元素为“TextBlock” (Name='PathPercentage');目标属性为“Margin”(类型 ‘厚度’) 这是带有绑定的ControlTemplateC# WPF:BindingExpression生成的值对目标无效,c#,wpf,C#,Wpf,无法理解这一点,我正在尝试使此模板尽可能多功能。我在尝试将文本块居中时遇到以下错误,水平对齐不起作用 System.Windows.Data错误:5:BindingExpression生成的值为 对目标属性无效。;Value='0' BindingExpression:Path=ActualWidth;DataItem='Grid'(Name='PathGrid'); 目标元素是“TextBlock”(Name='PathPercentage');目标属性 是“FontSize”(类型为“Dou
<Grid x:Name="PathGrid" Margin="2" Width="200">
<Canvas>
<TextBlock x:Name="PathPercentage" Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Value}"
Foreground="White"
FontSize="{Binding ElementName=PathGrid, Path=ActualWidth, Converter={StaticResource SizeTextOnParent}}">
<TextBlock.Margin>
<MultiBinding Converter="{StaticResource CenterElement}">
<Binding ElementName="PathGrid" Path="ActualWidth"/>
<Binding ElementName="PathPercentage" Path="FontSize"/>
</MultiBinding>
</TextBlock.Margin>
</TextBlock>
<TextBlock Text="{Binding ElementName=PathPercentage, Path=Margin}" />
<Ellipse Fill="Transparent"
Stroke="#434953"
StrokeThickness="3"
Width="{Binding ElementName=PathGrid, Path=ActualWidth}"
Height="{Binding ElementName=PathGrid, Path=ActualWidth}" />
呜呜,终于修好了。只需确保它返回type
Thickness
。我假设它应该作为一种类型返回Margin
,这就是为什么我很难找到它
double t = Math.Round(((parentWidth / 2) - (fontSize / 2)), 0);
Thickness margin = new Thickness(t, t, t, t);
return margin;
double t = Math.Round(((parentWidth / 2) - (fontSize / 2)), 0);
Thickness margin = new Thickness(t, t, t, t);
return margin;