我在使用此UserControl aph:FilterItemControl
Filter对象具有以下属性:Negate,Valued和MatchCase。第一个和最后一个绑定就好了,但Valued
没有。
<DataTemplate DataType="{x:Type helpers:Filter}">
<Grid x:Name="FilterGrid" Margin="10,0,0,0" >
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ToggleButton x:Name="NegationButton"
IsChecked="{Binding Negate}"
Content="!"
Grid.Column="0" />
<aph:FilterItemControl x:Name="FilterValueTbx"
ToolTip="{Binding Valued}"
ValueType="{Binding CurrentPropertyFilter.PropertyType, Source={x:Static helpers:MyClass.Instance} }"
Grid.Column="1" />
<ToggleButton x:Name="MatchCaseToggle"
IsChecked="{Binding MatchCase}"
Content="Aa"
Grid.Column="2" >
</ToggleButton>
</Grid>
</DataTemplate>
错误:
System.Windows.Data错误:40:
BindingExpression路径错误: &#39;量值&#39;在&#39; object&#39;上找不到的属性&#39;&#39; FilterItemControl&#39; (名称=&#39;用户控件&#39;)&#39 ;.
BindingExpression:路径=量值; 的DataItem =&#39; FilterItemControl&#39; (名称=&#39;用户控件&#39);
目标元素是 &#39; FilterItemControl&#39; (名称=&#39;用户控件&#39);
目标属性是 &#39;工具提示&#39; (键入&#39;对象&#39;)
只是想知道为什么以及如何解决这个问题?
看起来它跳转到UserControl的DataContext,为什么?
答案 0 :(得分:1)
您可以使用以下语法访问父元素的数据上下文:
{Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}
在您的示例中,您将使用以下内容:
{Binding DataContext.Valued,
RelativeSource={RelativeSource FindAncestor,
AncestorType=Grid}}">
答案 1 :(得分:1)
看起来它正在跳转到UserControl的DataContext,为什么?
如果您不提供绑定源,它将绑定到该元素的DataContext
。我最好的猜测是你在控件内部更改DataContext
的{{1}}。