Я создал пользовательский элемент управления с именем MovableItemsControl, унаследованный от ItemsControl, чтобы переопределить метод GetContainerForItemOverride () . Моя проблема в том, что ни один из объектов в связанной коллекции не отображается. В настоящее время я привязываюсь к OberservableCollection строк и вижу, что они находятся в ItemsSource , когда я просматриваю отладчик.
Пользовательский элемент управления показан ниже:
public class MovableItemsControl : ItemsControl
{
static MovableItemsControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MovableItemsControl), new FrameworkPropertyMetadata(typeof(MovableItemsControl)));
}
/// <summary>
/// Wraps each content object added to the ItemsControl in a NodeWrapper
/// </summary>
protected override DependencyObject GetContainerForItemOverride()
{
NodeWrapper nodeWrapper = new NodeWrapper();
return nodeWrapper;
}
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is NodeWrapper;
}
}
NodeWrapper - это пользовательский элемент управления, состоящий из пользовательского элемента управления, полученного из Thumb (MoveThumb) и метки (метка предназначена только для тестирования).
<Style TargetType="{x:Type local:MovableItemsControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MovableItemsControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>