WPF 텍스트 상자에 스택 패널이 채워지지 않음
나는 가지고 있다TextBox
내부의 제어StackPanel
누구의.Orientation
로 설정되어 있다.Horizontal
TextBox가 나머지 StackPanel 공간을 채울 수 없습니다.
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="180" Width="324">
<StackPanel Background="Orange" Orientation="Horizontal" >
<TextBlock Text="a label" Margin="5" VerticalAlignment="Center"/>
<TextBox Height="25" HorizontalAlignment="Stretch" Width="Auto"/>
</StackPanel>
</Window>
그리고 다음과 같이 보입니다.
TextBox가 StackPanel을 채우지 못하는 이유는 무엇입니까?
I knowledge를 사용하면 더 많은 컨트롤이 가능합니다.Grid
제어장치, 레이아웃이 헷갈려서요
나도 같은 문제가 있었어StackPanel
동작은 「설계상」입니다. StackPanel
는 눈에 보이는 영역 밖에 있는 것조차 「보이지 않는」 것을 목적으로 하고 있기 때문에, 스택 치수에 남은 공간을 채울 수 없습니다.
를 사용할 수 있습니다.DockPanel
와 함께LastChildFill
로 설정하다.true
충전되지 않은 모든 컨트롤을Left
원하는 효과를 시뮬레이션할 수 있습니다.
<DockPanel Background="Orange" LastChildFill="True">
<TextBlock Text="a label" Margin="5"
DockPanel.Dock="Left" VerticalAlignment="Center"/>
<TextBox Height="25" Width="Auto"/>
</DockPanel>
대신 그리드를 사용할 것을 권장합니다.
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="180" Width="324">
<Grid Background="Orange">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="a label"
VerticalAlignment="Center"/>
<TextBox Grid.Column="1"/>
</Grid>
</Window>
이 문제를 회피하는 또 다른 방법은 라벨을 오른쪽이 아닌 맨 위에 쌓는 것입니다.UWP에는 WPF용 헤더 속성이 존재하는지 알 수 없는 내장 헤더 속성이 있습니다.
<TextBox Header="MyLabel" />
실제 토픽별 오래된 질문:
HorizontalAlignment="Stretch"
필수품입니다.반드시 삭제해 주세요.width
.
아마 몇 번인가 짜증이 났을 거예요.
처음에 시작한 코드가 DockPanel을 사용했는데, 아마도 이 문제 때문일 것입니다.하지만 나는 그것에 익숙하지 않고, 내 욕구를 충족시킬 수 없을 것 같았다.
가로형 스택 패널을 사용해 보았지만, 이 귀찮은 문제에 봉착했습니다.
간단한 것을 세팅하거나 감싸면 된다고 생각하는 사람도 있을 것이다.하지만 그렇지 않다는 것이 밝혀졌습니다.그리고 결국엔 뭔가를 시도하고 인터넷을 검색하게 된다.
코드가 뒤에 있는 까다로운 솔루션은 좋아하지 않았습니다. 우연히 알게 된 것입니다.
Bimo와 마찬가지로 2개의 컨트롤에 대한 추가 그리드를 정의하게 되었습니다.그것은 조금 정교하지만 본질적으로는 명확하고 단순하다.
<!-- Used an extra grid to get both layout and tabbing right.-->
<Grid Grid.Row="0" Margin="5,5,5,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Name="UriTextBox" Text="{Binding Uri}"/>
<Button Grid.Column="1" Content="Go" Command="{Binding NavigateCommand}" IsDefault="True" Margin="5,0,0,0" Padding="20,0"/>
</Grid>
다음을 사용하여 StackPanel에 텍스트 상자를 채울 수 있습니다.
<StackPanel Margin="5,5,5,5">
<Label Content = "lblExample" Width = "70" Padding="0" HorizontalAlignment="Left"/>
<TextBox Name = "txtExample" Text = "Example Text" HorizontalContentAlignment="Stretch"/>
</StackPanel>
또한 결국 스타일에 신경을 쓰면서 글로벌 TextBox 스타일에 높이가 정의되어 TextBox가 늘어나지 않는다는 것을 깨닫는 데 시간이 걸렸습니다.높이="를 설정한 후TextBox가 늘어났습니다."라이브 프로퍼티 익스플로러"는 당신의 친구입니다.:)
언급URL : https://stackoverflow.com/questions/3737077/wpf-textbox-wont-fill-in-stackpanel
'programing' 카테고리의 다른 글
명령어로 파일을 사용하여 출력을 잘라내지 않고 같은 파일로 리다이렉트하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
---|---|
프로세스가 정지된 경우 프로세스를 재시작하는 bash 스크립트를 작성하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
WPF - Data Trigger와 트리거를 조합하는 방법 (0) | 2023.04.19 |
스트링의 대안은 있습니까?대소문자를 구분하지 않는 대체품? (0) | 2023.04.19 |
루프 내의 사용자 입력 읽기 (0) | 2023.04.19 |