如何在ItemsControl周围放置边框?

eri*_*ric 6 wpf xaml border itemscontrol

我在一个usercontrol中有一个带有自定义面板的itemscontrol.usercontrols大小仅受父窗口大小的约束.

<UserControl>
  <Grid>
    <Border BorderBrush="DarkGray" BorderThickness="5">
      <ItemsControl ItemsSource="{Binding ActiveGame.Grid.CellsFlat}">
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <Wpf:HexagonalPanel/>
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
          <DataTemplate>
            <Button />
          </DataTemplate>
        </ItemsControl.ItemTemplate>
      </ItemsControl>
    </Border>
  </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

我现在想要仅在生成的面板周围绘制边框.但相反,它是围绕整个网格绘制的,或者可能更精确地与网格大小相同.

我想我在HexagonalPanel上正确实现了MeasureOverride,它返回了正确的大小,所以它不应该绘制那个大小的边框吗?

我错过了什么?

Joe*_*ite 6

您尚未设置尺寸ItemsControl,因此它的尺寸也会与其父尺寸相符.尝试设置ItemsControl's HorizontalAlignmentVerticalAlignmentto Center; 这将使其ItemsControl实际大小与其内容相匹配.


Bry*_*hle 5

ItemsControl本身有BorderBrushBorderThickness属性。您可能想使用它们,因为默认情况下ItemsControl有一个。BorderControlTemplate