실제로 수행하는 작업은 실제로 복잡합니다.
실제로는 왼쪽 정렬이 필요합니다. 쉽습니다. HorizontalAlignment = "Left"로 설정하십시오.
최소 크기 및 최대 크기와 창 크기를 조정할 때 이러한 크기 사이에서 커지는 기능이 필요합니다.
먼저 TextBox의 열과 행 사이에 부모가 있어야 열의 전체 너비까지 확장됩니다. 당신은 XAML에서 보는 바와 같이
<Window x:Class="TestTextAlignment.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:TestTextAlignment"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid Name="MainGrid" ShowGridLines="True" Height="30" >
<Grid.Resources>
<loc:ColumnSizeToTextBoxSizeConverter x:Key="SizeConverter" LeftMargin="5" RightMargin="25"/>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Name="ColDef1" Width="*"></ColumnDefinition>
<ColumnDefinition Name="ColDef2" Width="*"></ColumnDefinition>
<ColumnDefinition Name="ColDef3" Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<DockPanel Name="Col1">
<TextBox Text="Text 1" Margin="5" HorizontalAlignment="Left" MinWidth="100" MaxWidth="300"
Width="{Binding ElementName=Col1, Path=ActualWidth, Mode=OneWay, Converter={StaticResource SizeConverter}}" />
</DockPanel>
<DockPanel Name="Col2" Grid.Column="1">
<TextBox Text="Text 2" Margin="5" HorizontalAlignment="Left" MinWidth="100" MaxWidth="300"
Width="{Binding ElementName=Col2, Path=ActualWidth, Mode=OneWay, Converter={StaticResource SizeConverter}}" />
</DockPanel>
<DockPanel Name="Col3" Grid.Column="2" >
<TextBox Text="Text 3" Margin="5" HorizontalAlignment="Left" MinWidth="100" MaxWidth="300"
Width="{Binding ElementName=Col3, Path=ActualWidth, Mode=OneWay, Converter={StaticResource SizeConverter}}" />
</DockPanel>
</Grid>
</Window>
그런 다음 당신은 부모 객체를 뺀 왼쪽 및 오른쪽 여백에 텍스트 상자의 크기를 설정합니다 컨버터가 필요합니다.
using System;
using System.Windows.Data;
namespace TestTextAlignment
{
public class ColumnSizeToTextBoxSizeConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (double)value - LeftMargin - RightMargin;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
public double LeftMargin { get; set; }
public double RightMargin { get; set; }
}
}
참고 : 그래서 하나의 컨버터 모든 요소에 다른 크기를 전송하는 데 사용할 수있는 매개 변수를 변환에서 왼쪽 및 오른쪽 여백을 적용하려면 컨버터를 향상시킬 수 있습니다.
이가 잘 작동 – LostSalad