控制焦点小组

时间:2015-09-01 09:45:42

标签: c# wpf wpf-controls multilingual

我正在开发一个多语言的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>

当上述控件获得焦点时,我的第二语言面板出现了。但它会使我的下一行控制向下移动并且看起来不太好。

1 个答案:

答案 0 :(得分:0)

要防止面板移动,请尝试将它们放在Grid而不是StackPanel中。这使您可以专门定义每个元素放置在Grid中的位置。在StackPanel中,元素&#34;堆栈&#34;在彼此之上。随着面板内容的变化,每个元素在&#34;堆栈中占用的空间量为#34;也有可能改变。