2010-07-16 35 views
1

我想將我的WPF應用程序轉換爲WPF UserControl。在原來的應用程序中,我故意修改了某些元素的邊距,使其邊緣不在窗口的邊界內。我這樣做是爲了隱藏不必要的邊框,而不必編寫自己的控件模板就無法擺脫。這是一個簡單的修復,但不幸的是,當我的應用程序進入UserControl時,這種技術不起作用。如果我將UserControl的寬度設置爲與原始應用程序中的窗口相同的寬度,那麼當我在測試應用程序中查看此UserControl時,我想隱藏其邊框的元素現在完全可見。如何防止WPF UserControl元素在我所需的視圖範圍外可見?

這對我來說沒有意義,爲什麼會發生這種情況。如果我將UserControl的寬度設置爲某個WIDTH,那麼UserControl的寬度應該等於WIDTH,對吧?那麼,正如你可以在Image 1中看到的那樣,無論我設置了WIDTH,UserControl的所有元素都是完全可見的。所需的視覺效果(我用於獲取原始應用程序的視覺效果)顯示在圖像2中,其中元素被窗口的邊界正確切除。

My Problem http://img715.imageshack.us/img715/1807/probleme.png

我怎樣才能確保切緣陰性的元素將在用戶控件顯示我想要的方式來?任何幫助完成此將不勝感激。

太感謝你了,

達拉爾

回答

4

您是否嘗試過您的用戶控件中設置你的元素ClipToBounds屬性True

+0

ClipToBounds的伎倆。謝謝。 – Dalal 2010-07-20 14:16:48

0

在您的用戶控件中,將容器的Clip屬性(例如Grid)設置爲用戶控件的大小(寬度,高度)。

例如,

<Window x:Class="TestClipping.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="Auto" Width="Auto"> 
    <Grid SizeChanged="OnGridSizeChanged" 
      x:Name="myGrid"> 

    </Grid> 
</Window> 

和事件處理程序:

private void OnGridSizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    // Set the clipping region to match the current display region of the grid. 
    var visibleArea = new RectangleGeometry(); 
    visibleArea.Rect = new Rect(0, 0, 
    myGrid.ActualWidth, myGrid.ActualHeight); 
    myGrid.Clip = visibleArea; 
} 
相關問題