C#/WPF를 사용하여 사용자 지정 컨트롤을 만들려고합니다. 내 컨트롤의 XAML 및 그 안에 넣으려고하는 창은 아래를 참조하십시오.사용자 지정 컨트롤 크기 조정/배치 문제
문제 : HorizontalAlignment 또는 Vertical alignment 속성을 가운데로 설정하면 컨트롤의 왼쪽 위 모퉁이가 가운데에 배치되지만 아래로 오른쪽으로 확장됩니다. 디자이너에 표시되는 컨트롤의 경계 상자는 매우 작습니다 (너비가 0 인 것 같습니다).
레이아웃이 그 일을 할 때 크기가 제대로보고되지 않는 문제가있는 것 같습니다. 또한 높이와 너비가 조정될 때 크기가 조정되지 않는 것처럼 보입니다. 컨트롤의 모양을 변경하는 코드 숨김 (아직)에 아무 것도 없습니다 (예 : 재정의 없음).
이것은 사용자 지정 컨트롤에 대한 나의 첫 번째 시도입니다. 아마도 더 좋은 방법 일 것입니다. (TextBlock이 마음에 듭니다.)하지만이 방법을 배웠습니다! :
<UserControl x:Class="LCD.LiquidCrystalDisplay"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignWidth="300" d:DesignHeight="122">
<Canvas>
<Rectangle Fill="#FFD1D1D1" Width="300" Height="122" />
<Rectangle Fill="#FF345534" Margin="12,8,12,8" Width="276" Height="106" />
<Rectangle Fill="#FF293E29" Margin="15,11,15,11" Width="270" Height="100" />
<Line X1="32" X2="32" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="50" X2="50" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="67" X2="67" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="84" X2="84" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="101" X2="101" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="117" X2="117" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="134" X2="134" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="151" X2="151" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="168" X2="168" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="184" X2="184" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="201" X2="201" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="218" X2="218" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="235" X2="235" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="251" X2="251" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="268" X2="268" Y2="111" Y1="11" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="15" X2="285" Y1="36" Y2="36" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="15" X2="285" Y1="61" Y2="61" StrokeThickness="1" Stroke="#FF345534" />
<Line X1="15" X2="285" Y1="86" Y2="86" StrokeThickness="1" Stroke="#FF345534" />
</Canvas>
</UserControl>
을 그리고 XAML은 창에 포함 : D
XAML 내 컨트롤을 정의
<Window x:Class="TestJunk.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:LCD;assembly=LCD"
Title="MainWindow" Height="341" Width="544">
<Grid Name="MainGrid">
<my:LiquidCrystalDisplay Name="lcd" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</Window>
또한이 컨트롤을 눈금에 배치하고 격자의 행 또는 열 정의의 높이 또는 너비를 자동으로 설정하면 마치 컨트롤의 높이와 너비가 0 인 것처럼 나타납니다. 그리드의 행/열은 아무것도 축소되지 않습니다. – Steve