有一個ClipToBounds
財產上Border
類應該剪輯的內容在該Border
的界限,但是不幸的是,它並沒有「做它在錫說」:
<Border CornerRadius="25" BorderBrush="RoyalBlue" BorderThickness="3" Width="300"
Height="50" ClipToBounds="True"> <!-- This doesn't work as expected -->
<Rectangle Fill="SkyBlue" />
</Border>
但是,Rectangle
類也提供了一些可能有所幫助的屬性。有一些東西只是用Rectangle.RadiusX
和Rectangle.RadiusY
性質圓的邊角Rectangle
?:
<Border CornerRadius="25" BorderBrush="RoyalBlue" BorderThickness="3" Width="300"
Height="50">
<Rectangle RadiusX="23" RadiusY="23" Fill="SkyBlue" />
</Border>
我知道你要裁剪的Rectangle
的彩色填充阻止你,但你可以使用Rectangle.Clip
屬性爲:
<Border CornerRadius="25" BorderBrush="RoyalBlue" BorderThickness="3" Width="300"
Height="50">
<Grid>
<Rectangle Name="ClipRectangle" Fill="Green" Margin="50,0,0,0"
Visibility="Hidden" />
<Rectangle RadiusX="23" RadiusY="23" Fill="SkyBlue" Clip="{Binding
RenderedGeometry, ElementName=ClipRectangle}" />
</Grid>
</Border>
這剪輯有色Rectangle
與其他Rectangle
的RenderedGeometry
命名ClipRectangle
...或者,當我說這款C嘴脣,也許我應該說這應該是剪輯,因爲我剛剛發現,這似乎只能在WPF設計器中運行,而不是在應用程序運行時運行。
不過,我出來的時候在這裏,所以希望你能找到拼圖的最後一塊,完成這個自己。潛在地,您也可以通過綁定到LinearGradientBrush
的GradientStop.Offset
屬性來完成此操作,該屬性在Border
上設置爲Background
,因此您甚至不需要此方法的Rectangle
。如果我以後可以再看,我會再看一次。
UPDATE >>>
我再看看這個Clip Rectangle
而不能工作,爲什麼它只在Visual Studio設計的作品。所以,放棄這個想法,你可以試試LinearGradientBrush
的想法,這同樣很好。首先,定義您的Brush
:
<LinearGradientBrush x:Key="ValueBrush" StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0.0" Color="SkyBlue" />
<GradientStop Offset="0.7" Color="SkyBlue" />
<GradientStop Offset="0.7" Color="Transparent" />
<GradientStop Offset="1.0" Color="Transparent" />
</LinearGradientBrush>
現在,我已經硬編碼的值,產生這樣的:
從剛纔這段代碼:
<Border CornerRadius="25" BorderBrush="RoyalBlue" Background="{StaticResource
ValueBrush}" BorderThickness="3" Width="300" Height="50" ClipToBounds="True" />
爲了您的實際需求,您需要創建一個double
屬性,以將數據綁定到GradientStop.Offset
屬性,如下所示:
<LinearGradientBrush x:Key="ValueBrush" StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0.0" Color="SkyBlue" />
<GradientStop Offset="{Binding MidPoint}" Color="SkyBlue" />
<GradientStop Offset="{Binding MidPoint}" Color="Transparent" />
<GradientStop Offset="1.0" Color="Transparent" />
</LinearGradientBrush>
現在,只要您提供介於0.0和1.0之間的值,就會創建您的電平表。
檢查[這](http://stackoverflow.com/questions/5649875/wpf-how-to-make-the-border-trim-the-child-elements)的問題。它可能會幫助你 – dkozl
BY THE WAY爲任何人看這個問題。下面的答案。可悲的是0票上漲。很棒。這是要走的路。沒有轉換器。基於控件的內容對模板沒有額外的影響。 簡單剪裁,同時保留。 –