Wpf 设置组样式时,通过列表框样式数据triigers设置ItemsPanel

Wpf 设置组样式时,通过列表框样式数据triigers设置ItemsPanel,wpf,wpf-controls,.net-4.5,Wpf,Wpf Controls,.net 4.5,我有一个ItemsControl,我已经设置了GroupStyle <ListBox.GroupStyle> <GroupStyle> <GroupStyle.Panel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" IsItemsHost="True" /> </ItemsPanelTemplate>

我有一个ItemsControl,我已经设置了GroupStyle

<ListBox.GroupStyle>
  <GroupStyle>
    <GroupStyle.Panel>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal" IsItemsHost="True" />
      </ItemsPanelTemplate>
    </GroupStyle.Panel>
  </GroupStyle>
</ListBox.GroupStyle>

此样式将水平排列所有组。根据某些条件,我需要在组内安排项目。例如,如果满足某些条件,则每个组中项目的面板将是WrapPanel,否则将是Canvas

如果没有GroupStyle集,我可以这样做:

<ListBox.Style>
  <Style TargetType="ListBox">
    <Setter Property="ItemsPanel">
      <Setter.Value>
        <ItemsPanelTemplate>
          <Canvas IsItemsHost="True" />
        </ItemsPanelTemplate>
      </Setter.Value>
    </Setter>
    <Style.Triggers>
      <DataTrigger Binding="{Binding SomeCondition}" Value="True">
        <Setter Property="ItemsPanel">
          <Setter.Value>
            <ItemsPanelTemplate>
              <StackPanel Orientation="Horizontal" IsItemsHost="True" />
            </ItemsPanelTemplate>
          </Setter.Value>
        </Setter>
      </DataTrigger>
    </Style.Triggers>
  </Style>
</ListBox.Style>


有人能告诉我如何将两者结合起来吗?

@N.J MultiDataTrigger会带来什么好处?只有一个条件,“基于某些条件”-这个条件到底是什么?你能详细说明一下你想要达到的目标吗?对不起,我没有读这篇文章Properly@MikeEason条件是承载列表框的控件的状态。就这个问题而言,没有必要也包括这项管制,这只会使事情变得更复杂。如果您想在某些场景中测试它,可以将它绑定到togglebutton的IsChecked。选中“插入”按钮时,面板应为画布,否则为堆叠面板。