2010-07-16 3 views
1

WPF 응용 프로그램을 WPF UserControl로 변환하려고합니다. 원래의 응용 프로그램에서, 나는 의도적으로 특정 요소의 여백을 수정하여 가장자리가 창의 경계 내에 있지 않도록했습니다. 나는 자신의 제어 템플릿을 작성하지 않고 제거 할 수없는 바람직하지 않은 경계를 숨기기 위해이 작업을 수행했습니다. 그것은 간단한 수정 프로그램이지만, 불행히도이 기술은 내 응용 프로그램이 UserControl로 만들어 질 때 작동하지 않습니다. 내 UserControl 너비를 원래 응용 프로그램의 창과 같은 너비로 설정하면 테스트 응용 프로그램 내에서이 UserControl을 볼 때 테두리를 숨기고 싶은 요소가 완전히 보입니다.WPF UserControl 요소가 원하는 뷰 범위 밖에 표시되지 않도록하려면 어떻게해야합니까?

왜 이렇게 될지 이해가되지 않습니다. UserControl의 너비를 특정 너비로 ​​설정하면 UserControl 너비가 WIDTH와 같아야합니다. 자, 이미지 1에서 볼 수 있듯이, WIDTH가 무엇이든 관계없이 UserControl의 모든 요소를 ​​완벽하게 볼 수 있습니다. 원하는 시각적 요소 (원래 응용 프로그램에서 사용했던 것)가 이미지 2에 표시됩니다. 이미지 2에서는 요소가 창의 경계로 올바르게 잘라집니다.

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

어떻게 부정적인 여백 요소가 UserControl을에에 내가 그들을 원하는 방식으로 표시되도록 할 수 있습니까? 이를 성취하는데 도움이된다면 크게 감사 할 것입니다.

True에 UserControl을 내 요소에 ClipToBounds 속성을 설정 시도했다 당신에게

달랄

답변

4

을 정말 고마워요?

+0

ClipToBounds가 트릭을했다. 감사. – Dalal

0

사용자 컨트롤 안에 Grid과 같이 사용자 컨트롤의 크기 (너비, 높이)로 컨테이너의 Clip 속성을 설정하십시오. 예를 들어

,

<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; 
} 
관련 문제