0

UserControlをasDataTemplateで使用しようとしていItemsControlます。UserControlが呼び出され、のにバインドされたWorkItemControl内のオブジェクトのタイプはです。ObservableCollectionItemsSourceItemsControlWorkItemModel

バインディング診断を有効にすると、次のエラーが表示されます

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ますか?

4

1 に答える 1

0

私が考えていることを書くことができるかどうかわかりません... UserControl の XAML で UserControl のプロパティを使用するには RelativeSource=Self が必要ですが、プロパティを外部にバインドしようとすると、この同じ RelativeSource が邪魔になります。私は同じ問題に直面しています。外部バインディングのソースを設定することでなんとか解決しましたが、これはあまりエレガントな方法ではないと思います。実際、これは WPF の設計上の問題だと思います (私の考えでは) UserControl内の RelativeSource は、そののバインディングに影響を与えてはなりません (ただし、影響します)。これがより良い方法で解決された場合は、お知らせください。ありがとう。

于 2014-02-26T13:54:16.183 に答える