Я пытаюсь использовать UserControl
как DataTemplate
в ItemsControl
. UserControl
называется WorkItemControl
, а объекты в ObservableCollection
, связанные с ItemsSource
ItemsControl
, имеют тип WorkItemModel
.UserControl как DataTemplate в ItemsControl
я получаю следующее сообщение об ошибке при включении связывания диагностики
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, кнопка используется как 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
?
Возможно, вы сами установили DataContext для WorkItemControl. Затем привязка в DataTemplate попытается найти свойство ItemModelText' для элемента управления, а не элемента данных. Поэтому не устанавливайте DataContext для WorkItemControl, если вы хотите использовать его в DataTemplate. – Clemens