我有一個窗口,它的大小可以在用戶運行時更改。如何在窗口中繪製填充xaml寬度的線
我想繪製一條延伸到窗口寬度的水平線。
我可以通過後面的代碼(在窗口調整大小事件,改變線的大小)做到這一點,
,但我在尋找一種方法來改變在XAML行的大小,因此,例如綁定X1,X2 ,y1和y2與父窗口(或窗口)的大小相匹配,當窗口大小發生變化時,該窗口將自行調整大小。
我該怎麼做?
我有一個窗口,它的大小可以在用戶運行時更改。如何在窗口中繪製填充xaml寬度的線
我想繪製一條延伸到窗口寬度的水平線。
我可以通過後面的代碼(在窗口調整大小事件,改變線的大小)做到這一點,
,但我在尋找一種方法來改變在XAML行的大小,因此,例如綁定X1,X2 ,y1和y2與父窗口(或窗口)的大小相匹配,當窗口大小發生變化時,該窗口將自行調整大小。
我該怎麼做?
在這種情況下,也許嘗試使用Separator
:
Separator
一個控制繪製線,水平或垂直,在對照中的物品,如列表框,菜單和工具欄之間。
對於分離基類是Control
,這意味着它可以應用樣式/控件模板,是舒適,當你想爲他單獨存儲性能。
實施例:
<Grid>
<Separator Name="MySeparator"
Height="4"
Width="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Bottom"
Background="Black" />
</Grid>
此示例繪製一條線在底部上Window
的整個寬度。設置屬性Width="Auto"
和HorizontalAlignment="Stretch"
可以自動在窗口的寬度上拉伸Separator。
要指定分隔任意Height
,使用下面的風格:
<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>
請注意,在UWP中,分隔符控件不可用。 – bunkerdive
此畫線的窗口的寬度,無論哪個Panel
您選擇。 (Canvas, Grid, StackPanel
等)。
如果你需要一條與Window不平行的線,它也可以工作。
//假設窗口名爲主窗口
XAML
<Canvas>
<Line X1='0'
X2='{Binding ActualWidth, Mode=OneWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type local:MainWindow}}}'
Y1='50'
Y2='90'
Stroke="Orange"
StrokeThickness='2' />
<Line X1='0'
X2='{Binding ActualWidth, Mode=OneWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type local:MainWindow}}}'
Y1='110'
Y2='110'
Stroke="Green"
StrokeThickness='2' />
</Canvas>
截圖
' '=全部需要,或者設置垂直寬度= 1。 –
@ChrisW。這不會在Canvas或WrapPanel中工作。 –
@WaltRitscher謝謝,他指定了一個窗口,而不是面板。只是試圖保持它儘可能簡單/簡單。但是,感謝您澄清OP –