我一直在試圖找出一個有希望的日子很簡單的事情,但我只是不明白。我想要的是一個窗口,讓我們說一個按鈕和一個多邊形兩個不同的容器。當調整窗口的大小時,我希望按鈕保持其大小和相對位置(例如,左上角,而不被其他容器覆蓋)並調整多邊形的大小(它不應該保持其寬度/高度比例)而不改變其行程厚度。調整窗口大小的形狀
這是非常重要,我可以從代碼隱藏完全創建多邊形,在XAML 定義它不幫助的。
我一直在試圖找出一個有希望的日子很簡單的事情,但我只是不明白。我想要的是一個窗口,讓我們說一個按鈕和一個多邊形兩個不同的容器。當調整窗口的大小時,我希望按鈕保持其大小和相對位置(例如,左上角,而不被其他容器覆蓋)並調整多邊形的大小(它不應該保持其寬度/高度比例)而不改變其行程厚度。調整窗口大小的形狀
這是非常重要,我可以從代碼隱藏完全創建多邊形,在XAML 定義它不幫助的。
您可以創建一個縮放PathGeometry的路徑,該路徑使用其容器的寬度和高度作爲縮放因子。這樣,就可以在邏輯座標完全指定的幾何形狀,在任一方向範圍從0到1:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button HorizontalAlignment="Left" Margin="5" Content="Button"/>
<Canvas x:Name="polylineCanvas" Grid.Row="1">
<Path Stroke="Blue" StrokeThickness="3">
<Path.Data>
<PathGeometry x:Name="polyline">
<PathGeometry.Transform>
<ScaleTransform
ScaleX="{Binding ActualWidth, ElementName=polylineCanvas}"
ScaleY="{Binding ActualHeight, ElementName=polylineCanvas}"/>
</PathGeometry.Transform>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
</Grid>
現在你可能在代碼中指定的幾何形狀等如下所示:
var points = new Point[]
{
new Point(0.1, 0.1),
new Point(0.9, 0.1),
new Point(0.9, 0.9),
new Point(0.1, 0.9)
};
var figure = new PathFigure
{
StartPoint = points[0],
IsClosed = true
};
var segment = new PolyLineSegment(points.Skip(1), true);
figure.Segments.Add(segment);
polyline.Figures.Add(figure);
您可以替代地使用一個StreamGeometry而不是PathGeometry。
您在WPF中沒有錨點。有許多佈局控件,每個控件都有不同的方式來設置控件的位置。
例如,位於網格中的控件使用邊距及其大小進行定位。 「畫布」中的控件使用Canvas.Top
,Canvas.Left
,Canvas.Right
和Canvas.Bottom
進行定位。 StackPanels
中的控件使用邊距來獲得分隔。
我建議你看一看關於佈局WPF這些文章讓你想要什麼:
http://www.codeproject.com/KB/WPF/WPFLayoutQS.aspx
http://www.c-sharpcorner.com/UploadFile/dpatra/105202009083754AM/1.aspx
希望這有助於!
非常感謝!我設法在後面的代碼中做了綁定,學到了很多東西,最終讓我的模式繼續前進。 – egon12 2013-04-24 22:00:31