Main Content 인 Grid 안에 Control 추가 시
상위 Border 범위를 침범하는 문제가 발생한다.
그래서 Clip 이라는 것을 적용시켜주어야한다.
xInnerBorder 안의 Grid 에 아래 xaml 코드를 입력하고 Converter 들을 추가해준다.
<Grid.Clip>
<RectangleGeometry RadiusX="{Binding Path=CornerRadius, ElementName=xInnerBoder, Converter={cv:GridRaidusClipConverter}}"
RadiusY="{Binding Path=CornerRadius, ElementName=xInnerBoder, Converter={cv:GridRaidusClipConverter}}">
<RectangleGeometry.Rect>
<MultiBinding Converter="{cv:GridClipConverter}">
<Binding Path="ActualWidth" RelativeSource="{RelativeSource AncestorType={x:Type Grid}}"/>
<Binding Path="ActualHeight" RelativeSource="{RelativeSource AncestorType={x:Type Grid}}"/>
</MultiBinding>
</RectangleGeometry.Rect>
</RectangleGeometry>
</Grid.Clip>
public class GridClipConverter : MarkupExtension, IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length == 2 && values[0] is double width && values[1] is double height)
{
return new Rect(0, 0, width , height );
}
return Rect.Empty;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
public class GridRaidusClipConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is CornerRadius radius)
{
if (radius == new CornerRadius())
{
return 0;
}
else
{
return 10;
}
}
return 10;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
그러면 상위 Border를 침범하지 않는다.
'WPF' 카테고리의 다른 글
[WPF] 마우스,키보드 이벤트를 ViewModel 에서 감지하기 (0) | 2025.03.06 |
---|---|
[WPF] WindowChrome 와 Shadow 를 가진 창 만들기 [2/2] (0) | 2024.10.11 |
[WPF] WindowChrome 와 Shadow 를 가진 창 만들기 [1/2] (1) | 2024.10.11 |
[WPF] Binding Error - HorizontalContentAlignment, VerticalContentAlignment (2) | 2024.09.11 |
[WPF] Delay 이후 UI 작업을 진행할 때 (0) | 2024.09.11 |