首页 > 解决方案 > 如何打开 itemTemplate 控件的垂直和水平边框?

问题描述

我创建了项目模板控件并在数据模板中设置了它的边框粗细和颜色。这是我的 ItemTemplate 代码:

  <ItemsControl  x:Name="VimshottariDasha" Margin="-10,83,-124,-267" FontSize="16" Grid.ColumnSpan="3" BorderThickness="0">
                            <ItemsControl.ItemTemplate>

                                <DataTemplate>
                                    <Border BorderThickness="1" BorderBrush="DimGray">

                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition SharedSizeGroup="Col1" />
                                                <ColumnDefinition SharedSizeGroup="Col2" />
                                                <ColumnDefinition SharedSizeGroup="Col3" />
                                            </Grid.ColumnDefinitions>

                                            <Button Background="Transparent" BorderThickness="0" x:Name="DashaButton" Grid.Column="0" Content="{Binding rulerName}" Command="{Binding SelectedDasha}" CommandParameter="{Binding Content, RelativeSource={RelativeSource Self}}"/>
                                            <TextBlock Grid.Column="1" Text="{Binding rulerStartDate, StringFormat=dd-MMM-yyyy HH:mm:ss}"  />
                                            <TextBlock Grid.Column="2" Text="{Binding rulerEndDate, StringFormat=dd-MMM-yyyy HH:mm:ss}"/>
                                        </Grid>
                                    </Border>
                                </DataTemplate>

                            </ItemsControl.ItemTemplate>

无论堆栈方向如何,如何同时显示垂直和水平边框?

同样的事情发生在另一个 itemTemplate 但相反,其堆栈方向设置为水平。我可以在第二项 Control 中看到垂直边框,但看不到水平边框。

这是当前的输出,里面有水平边框但没有垂直边框(堆栈方向默认为垂直)

这是第二个具有水平堆栈方向的 ItemControl,它缺少水平边框。

谢谢。

标签: wpfxamlborderitemscontrol

解决方案


WPF边框控件仅沿其外边缘绘制边框。[可以通过设置BorderThickness来翻转一个或多个边缘。]

如果要在各个控件之间创建边框线,您要么必须使用多个边框元素,要么自己手动绘制内部线条。

例如

<Border HorizontalAlignment="Center" VerticalAlignment="Center" BorderBrush="Green" BorderThickness="2" >
    <Grid Height="24" >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0" Text="Column 1" VerticalAlignment="Center" />
        <TextBlock Grid.Column="2" Text="Column 2" VerticalAlignment="Center" />
        <TextBlock Grid.Column="4" Text="Column 3" VerticalAlignment="Center" />

        <Path Stroke="Red" StrokeThickness="1" Data="M 0,0 M 2,2 M 1,0 L 1,2" Stretch="Fill" Grid.Column="1" />
        <Path Stroke="Red" StrokeThickness="1" Data="M 0,0 M 2,2 M 1,0 L 1,2" Stretch="Fill" Grid.Column="3" />
    </Grid>
</Border>

推荐阅读