Ich habe eine UserControl
, die ich verwende, um eine Liste von UIElement
s anzuzeigen. Die Steuerung besteht aus einem einzigen ItemsControl
mit seiner ItemPanelTemplate
für eine horizontale StackPanel
geschaltet, dessen ItemsSource
gebunden an eine durch das UserControl
ItemTemplate
und dessen Satz in der UserControl.Resources
DependencyProperty
ausgesetzt.WPF - ItemTemplate reagiert nicht wie erwartet
Alles funktioniert gut, außer die ItemTemplate
nie bekommen, und ich kann nicht sehen, warum. Die vollständige Quelle ist unten.
UserControl.xaml -
<UserControl x:Name="UC" x:FieldModifier="private" x:Class="ContentSliderControl.ContentSlider"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<DataTemplate x:Key="pageTemplate">
<Border CornerRadius="10" Padding="5" Height="200" Width="200" Background="#333">
<ContentControl Content="{Binding}"/>
</Border>
</DataTemplate>
<ItemsPanelTemplate x:Key="template">
<StackPanel IsItemsHost="True"
Orientation="Horizontal"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled"/>
</ItemsPanelTemplate>
</UserControl.Resources>
<ItemsControl ItemsPanel="{StaticResource template}"
ItemTemplate="{StaticResource pageTemplate}"
ItemsSource="{Binding ElementName=UC,Path=Pages}"/>
UserControl.xaml.cs -
[ContentProperty("Pages")]
public partial class ContentSlider : UserControl
{
public List<UIElement> Pages
{
get { return (List<UIElement>)GetValue(PagesProperty); }
//set { SetValue(PagesProperty, value); }
}
// Using a DependencyProperty as the backing store for Pages. This enables animation, styling, binding, etc...
public static readonly DependencyProperty PagesProperty =
DependencyProperty.Register("Pages", typeof(List<UIElement>), typeof(ContentSlider), new UIPropertyMetadata(null));
public ContentSlider()
{
InitializeComponent();
}
}
}
ich verbrauchen die Kontrolle in meinem Hauptfenster so -
<slider:ContentSlider >
<slider:ContentSlider.Pages>
<Button>1</Button>
<Button>2</Button>
<Button>3</Button>
<Button>4</Button>
</slider:ContentSlider.Pages>
</slider:ContentSlider>
Die Schaltflächen erscheinen gut, aber nicht innerhalb des 200-Pixel-Quadrats.
Jede Hilfe wäre sehr geschätzt. Danke.
Was würden Sie dann vorschlagen? – Stimul8d
Auch, wenn ich die ItemsControl für eine Listbox vertauschen, dann rendern sie wie erwartet, also bin ich mir nicht sicher, dass Sie genau dort sind – Stimul8d
Scheint muss ich meine Worte essen! Danke Nir. – Stimul8d