【问题标题】:Add border when setting wrap panel in an itemscontrol在项目控件中设置环绕面板时添加边框
【发布时间】:2021-10-02 07:58:37
【问题描述】:

我正在使用ItemsControl,并将ItemsPanel 设置为WrapPanel,这样我就可以在多列中显示数据。现在我想为每个项目添加一个边框,就像DataGrid。 但边界总是重叠的。那么如何将每个边框的粗细设置为1.0呢?

我尝试将myBorderBorderThickness 设置为1 0.5 1 0.5,它可以工作。但不是最好的方法。

<ItemsControl ItemsSource="{Binding}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border x:Name="myBorder" BorderBrush="Green" BorderThickness="1 1 1 0" Margin="12 0 0 0">
                    <StackPanel Margin="10" Orientation="Horizontal">
                        <TextBlock Width="20" Text="{Binding Name}"/>
                        <TextBox Width="100" Text="{Binding Value}"/>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

【问题讨论】:

  • 或使用 1,1 并将边距设置为 0,-1,0,0 以便它们重叠
  • 似乎不起作用。见imgur.com/a/G2gciBG
  • 再试一次,但将 Margin="0,1,0,0" 添加到包裹面板
  • 它有效,你能把它放在答案中吗?谢谢。
  • 完成 :) 很高兴我能帮上忙

标签: wpf itemscontrol wrappanel


【解决方案1】:

尝试给它们一个像素“1,1”的边框和“0,-1,0,0”的边距。这将使它们都有一个完整的边框,但它们会重叠,给人的印象是只有一只蜜蜂出现在触摸的脸上。 为了防止第一个元素的顶部消失,您还需要将包装面板的边距设置为“0,1,0,0” 下面的例子

<ItemsControl ItemsSource="{Binding}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border x:Name="myBorder" BorderBrush="Green" BorderThickness="1,1" Margin="0,-1,0,0" Margin="12 0 0 0">
                    <StackPanel Margin="10" Orientation="Horizontal">
                        <TextBlock Width="20" Text="{Binding Name}"/>
                        <TextBox Width="100" Text="{Binding Value}"/>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical" Margin="0,1,0,0"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 2011-09-18
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多