UserControl
私はUIElement
のリストを表示するために使用しています。コントロールはそれで一つのItemsControl
で構成されていItemPanelTemplate
は、そのItemsSource
がUserControl
とUserControl.Resources
でそのItemTemplate
セットによって公開されDependencyProperty
にバインドされた、水平StackPanel
のために切り替えています。WPF - ItemTemplateが期待どおりに動作しない
ItemTemplate
が適用されないのを除いてすべて正常に動作し、理由がわかりません。完全な情報源は以下の通りです。
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();
}
}
}
私はこのような私のメインウィンドウに制御を消費 -
<slider:ContentSlider >
<slider:ContentSlider.Pages>
<Button>1</Button>
<Button>2</Button>
<Button>3</Button>
<Button>4</Button>
</slider:ContentSlider.Pages>
</slider:ContentSlider>
ボタンは正常に表示されますが、200ピクセルの四角形の枠内には表示されません。
どんな助けもgreatlly appriciatedされるでしょう。おかげさまで
あなたは何をお勧めしますか? – Stimul8d
また、リストボックスのItemsControlを交換すると、予想通りにレンダリングされるので、あなたがそこにいるかどうかわからない – Stimul8d
私の言葉を食べなければならないようですね!ありがとうございました。 – Stimul8d