0

我正在尝试在 a 中使用a UserControlas 。被调用并且绑定到的对象是类型。DataTemplateItemsControlUserControlWorkItemControlObservableCollectionItemsSourceItemsControlWorkItemModel

启用绑定诊断时出现以下错误

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

如果将 Button 用作 DataTemplate 而不是 UserControl,则它可以正常工作。

以下 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?

4

1 回答 1

0

我不确定我能写出我的想法...您需要RelativeSource=Self 才能在UserControl 的XAML 中使用UserControl 的属性,但是当您尝试在外部绑定属性时,同样的RelativeSource 会妨碍您。我面临同样的问题。我设法通过设置外部绑定的来源来解决它,但我认为这不是太优雅的方式。事实上,我认为这是 WPF 中的一个设计问题,因为(在我看来)UserControl 中的 RelativeSource应该影响它之外的任何绑定(但确实如此)。如果您以更好的方式解决此问题,请告诉我。谢谢。

于 2014-02-26T13:54:16.183 回答