我尝试在UserControl
中使用DataTemplate
作为ItemsControl
。 UserControl
被称为WorkItemControl
,而ObservableCollection
ItemsSource
中ItemsControl
的对象属于WorkItemModel
类型。
启用绑定诊断时出现以下错误
BindingExpression
路径错误:
'ItemModelText' property not found on 'object' ''WorkItemControl' (Name='')'.
BindingExpression:Path=ItemModelText; DataItem='WorkItemControl' (Name='');
target element is 'WorkItemControl' (Name=''); target property is 'ItemText' (type 'String')
如果使用UserControl,将Button用作DataTemplate,它可以正常工作。
以下XAML代码段显示ItemsControl
。
<Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" BorderThickness="0" BorderBrush="Black">
<ItemsControl Name="WorkItems" ItemsSource="{Binding Path=WorkItemModels}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<control:WorkItemControl ItemText="{Binding Path=ItemModelText}"/>
<!--<Button Content="{Binding Path=ItemModelText}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
任何想法为什么它不适用于UserControl
?
答案 0 :(得分:0)
我不确定我能写出我的想法...... 您需要RelativeSource = Self来在UserControl的XAML中使用UserControl的属性,但是当您尝试将属性绑定到外部时,同样的RelativeSource会受到影响。我面临着同样的问题。我设法通过设置外部绑定的来源来解决它,但我认为这不是太优雅的方式。事实上,我认为这是WPF中的设计问题(在我看来),UserControl中的RelativeSource 不应该影响它的任何绑定 (但确实如此)。 如果你以更好的方式解决这个问题,请告诉我。感谢。