我正在开发一个多语言的WPF应用程序。用户必须同时为多种语言提供输入。这有效,但它也会移动它下面的字段。
我正在寻找的是这样的:
到目前为止,我所做的工作如下:
<Label Grid.Column="0" Grid.Row="0" Content="Field1" Padding="0" Style="{DynamicResource ControlLabel}"/>
<Label Grid.Column="1" Grid.Row="0" Content=":" Style="{DynamicResource ControlLabelMiddle}"/>
<StackPanel Grid.Column="2" Grid.Row="0" Margin="3" Style="{Binding RelativeSource={RelativeSource TemplatedParent}}">
<TextBox x:Name="txtField1" Height="23" GotKeyboardFocus="txtField1_GotKeyboardFocus" />
<Grid Background="White" x:Name="pnlField1" Visibility="Collapsed" Panel.ZIndex="99">
<Border BorderBrush="blue" BorderThickness="3">
<StackPanel Background="White" Margin="5">
<StackPanel Orientation="Horizontal" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Label Content="Language2" HorizontalAlignment="Left"/>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Right" FontSize="10" Padding="2" >
<Hyperlink Hyperlink.Click="btnClose_Click" x:Name="btnClose" >X</Hyperlink>
</TextBlock>
</StackPanel>
<TextBox x:Name="txtField_Second" Height="23" Width="280" />
</StackPanel>
</Border>
</Grid>
</StackPanel>
当上述控件获得焦点时,我的第二语言面板出现了。但它会使我的下一行控制向下移动并且看起来不太好。
答案 0 :(得分:0)
要防止面板移动,请尝试将它们放在Grid
而不是StackPanel
中。这使您可以专门定义每个元素放置在Grid
中的位置。在StackPanel
中,元素&#34;堆栈&#34;在彼此之上。随着面板内容的变化,每个元素在&#34;堆栈中占用的空间量为#34;也有可能改变。