我想从这个xaml代码中创建一个模板或样式,而不需要定义ItemsControl.Items,控件应该是可交换的:
<ItemsControl Style="{DynamicResource ItemsControlWithMargin1}" Height="50">
<ItemsControl.ItemContainerStyle>
<Style TargetType="Control">
<Setter Property="Margin" Value="15 0 0 0"></Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Items>
<Image Style="{DynamicResource WarningImage}"/>
<Label Style="{DynamicResource InfoLabel1}">
</ItemsControl.Items>
</ItemsControl>我试过一种风格:
<Style x:Key="ItemsControlWithMargin1" TargetType="ItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ItemsControl">
<ItemsControl>
<ItemsControl.ItemContainerStyle>
<Style TargetType="Control">
<Setter Property="Margin" Value="15 0 0 0"></Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ControlTemplate>
</Setter.Value>
</Setter>
但是当我设置样式时,我看不到我的ItemsControl.Items在我的控件所在的原始ItemsControl中,.只是空白而已。当我使用这个ControlTemplate时,也会发生同样的情况:
<ControlTemplate x:Key="ItemsControlWithMargin2" TargetType="{x:Type ItemsControl}">
<ItemsControl>
<ItemsControl.ItemContainerStyle>
<Style TargetType="Control">
<Setter Property="Margin" Value="15 0 0 0"></Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ControlTemplate>发布于 2018-04-13 14:05:32
您在<ItemsPresenter />中缺少了一个ControlTemplate。但是,没有理由仅仅为了能够设置一些属性(如ControlTemplate和ItemsPanel )而定义自定义的ItemsPanel。
<Style x:Key="ItemsControlWithMargin1" TargetType="ItemsControl">
<Setter Property="Margin" Value="15 0 0 0"></Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>https://stackoverflow.com/questions/49818608
复制相似问题