拉伸xaml路径的一部分

时间:2011-07-27 15:32:46

标签: c# wpf xaml expression-blend

我正在使用Paths为我用WPF编写的应用程序构建自定义内容边框。我想要的是在拉伸窗口时只拉伸路径的中间部分(图2)而不是整个窗口(图3)。

我的第一直觉是将路径分成三个部分并将它们放入网格中。左中路径和右路径将保持固定,而中间路径将延伸。问题是,我无法弄清楚如何在整个事物中放置一个笔划,而不是在三条路径之间插入。

注意:此图片仅供参考,实际边框较复杂,但仍由三部分组成。

enter image description here

3 个答案:

答案 0 :(得分:1)

我还会使用网格来让中心部分伸展。您是否尝试过在边框中包裹网格?因为这应该只在网格外部创建边框画笔而不是在单元格之间。

答案 1 :(得分:1)

为什么不使用带有三个边框的网格?

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Border Background="Blue" Grid.Column="0" MinWidth="50" CornerRadius="10,0,0,10" BorderBrush="LimeGreen" BorderThickness="2,2,0,2"/>
    <Border Background="Red" Grid.Column="1" BorderBrush="LimeGreen" BorderThickness="0,2"/>
    <Border Background="Blue" Grid.Column="2" MinWidth="50" CornerRadius="0,10,10,00" BorderThickness="0,2,2,2" BorderBrush="LimeGreen"/>
</Grid>

或者,您可以将网格包裹在边框中:

<Border CornerRadius="10" BorderThickness="1" Background="Blue" BorderBrush="Red">
    <Grid Background="Green" Margin="20,0"/>
</Border>

如果不了解需要什么,很难说哪一个是正确的答案。 (如果你正在用剪切路径或有趣的形状做疯狂的事情,第一个解决方案可能会更容易。)

答案 2 :(得分:0)

路径语法指示笔画终点是否连接回起点。如果路径数据以“Z”结尾,则结束连接到开始。

如果左侧和右侧单元格的路径数据末尾有“Z”,请尝试删除“Z”。

参考参考: http://msdn.microsoft.com/en-us/library/cc189041(v=vs.95).aspx#closecommand