c# - 如何在 xaml 中填充宽度的窗口中绘制一条线

标签 c# wpf xaml

我有一个窗口,其大小可以在运行时由用户更改。

我想画一条延伸到窗口宽度的水平线。

我可以通过隐藏代码来做到这一点(在窗口调整大小事件中,改变线条的大小),

但我正在寻找一种方法来更改 xaml 中行的大小,例如,将 x1、x2、y1 和 y2 绑定(bind)到它们的父级(或窗口)大小,当窗口大小发生变化时,行会自行调整大小.

我该怎么做?

最佳答案

在这种情况下,也许可以尝试使用 Separator :

A Separator control draws a line, horizontal or vertical, between items in controls, such as ListBox, Menu, and ToolBar.

Separator 的基类是 Control,这意味着可以应用 Style/ControlTemplate,当你想为他单独存储属性时,这很舒服。

例子:

<Grid>
    <Separator Name="MySeparator" 
               Height="4"
               Width="Auto"
               HorizontalAlignment="Stretch"
               VerticalAlignment="Bottom"                   
               Background="Black" />
</Grid>

此示例在 Window 的整个宽度的底部绘制一条线。设置属性 Width="Auto"Horizo​​ntalAlignment="Stretch" 可以自动将 Separator 拉伸(stretch)到窗口的宽度。

要为分隔符指定任意高度,请使用以下样式:

<Style TargetType="{x:Type Separator}">
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="SnapsToDevicePixels" Value="True" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Separator}">
                <Rectangle SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                           Height="{TemplateBinding Height}"
                           Width="{TemplateBinding Width}"
                           Fill="{TemplateBinding Background}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

关于c# - 如何在 xaml 中填充宽度的窗口中绘制一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842998/

相关文章:

c# - Rabin-Karp 字符串搜索算法中使用的滚动哈希函数是否有任何有效的实现?

c# - 通过另一个过滤列表

wpf - 闪烁的文本 block

c# - 组合不使用 MVVM 和 XAML 更新

java - C# 等效于 LinkedHashMap

c# - .NET 服务器调度服务 - 我应该如何处理这个问题?

c# - 是否可以将 xaml.cs 连接到 VS2017 csproj 格式的相应 xaml?

wpf - 在设计器中看不到图像

c# - 如何更改 telerik WPF RadGridView 列过滤 View 模板

c# - 将多个 View 绑定(bind)到多个 View 模型