2014-04-03 57 views
3

我有一個窗口,它的大小可以在用戶運行時更改。如何在窗口中繪製填充xaml寬度的線

我想繪製一條延伸到窗口寬度的水平線。

我可以通過後面的代碼(在窗口調整大小事件,改變線的大小)做到這一點,

,但我在尋找一種方法來改變在XAML行的大小,因此,例如綁定X1,X2 ,y1和y2與父窗口(或窗口)的大小相匹配,當窗口大小發生變化時,該窗口將自行調整大小。

我該怎麼做?

+1

' '=全部需要,或者設置垂直寬度= 1。 –

+0

@ChrisW。這不會在Canvas或WrapPanel中工作。 –

+0

@WaltRitscher謝謝,他指定了一個窗口,而不是面板。只是試圖保持它儘可能簡單/簡單。但是,感謝您澄清OP –

回答

9

在這種情況下,也許嘗試使用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> 
+0

請注意,在UWP中,分隔符控件不可用。 – bunkerdive

6

此畫線的窗口的寬度,無論哪個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> 

截圖

enter image description here enter image description here