la création d'un custom itemscontrol
Je suis en train de créer un contrôle personnalisé dérivé de ItemsControl
. Le ItemsControl
est initialisé avec des articles, mais ils ne sont pas affichés.
itemsControl :
public class PipeControl : ItemsControl
{
static PipeControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(PipeControl), new FrameworkPropertyMetadata(typeof(PipeControl)));
}
public PipeControl()
{
Checkers = new ObservableCollection<Checker>();
Checkers.Add(new Checker());
Checkers.Add(new Checker());
Checkers.Add(new Checker());
Checkers.Add(new Checker());
Checkers.Add(new Checker());
}
public ObservableCollection<Checker> Checkers
{
get;
set;
}
}
les thèmes dictionnaire de ressources : Générique.xaml
<Style TargetType="{x:Type local:PipeControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:PipeControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate DataType="{x:Type local:Checker}">
<Ellipse Fill="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsSource" Value="{Binding Checkers,RelativeSource={RelativeSource Self}}"/>
<!-- Just a Precaution its the default panel any ways -->
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
Des idées pourquoi les articles ne sont pas affichés?
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la ItemsSource. Ainsi, par exemple, vous pouvez ajouter
ItemsSource = Checkers;
en dessous de la dernière Pions Ajouter ligne. Même si vous essayez de définir la ItemsSource de Dames dans le style, je pense qu'il serait plus facile si vous définissez dans la classe de contrôle. Juste mes deux cents, mais.Voici un exemple de la PipeControl classe:
Vous avez également besoin d'un ItemsPresenter dans votre ControlTemplate et votre Ellipse besoins d'une largeur et une hauteur. Voici une mise à jour de style pour vous: