Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确保控件在multilang界面中处于其区域内_C#_Wpf_Localization_Controls - Fatal编程技术网

C# 确保控件在multilang界面中处于其区域内

C# 确保控件在multilang界面中处于其区域内,c#,wpf,localization,controls,C#,Wpf,Localization,Controls,我有一个布局,我试图使多语言,但随着过渡来了一些障碍 中文: 德语: 正如您所看到的,复选框在网格中四处移动,我如何对其进行排序以避免与其他控件冲突 谢谢 使用XAML编辑: <Grid x:Name="Block" Margin="23,70,24.002,153"> <Rectangle Fill="#FFDDDDDD" Stroke="#FFD7D7D7" Height="54" VerticalAlignment="Top" RadiusX=

我有一个布局,我试图使多语言,但随着过渡来了一些障碍

中文:

德语:

正如您所看到的,复选框在网格中四处移动,我如何对其进行排序以避免与其他控件冲突

谢谢

使用XAML编辑:

<Grid x:Name="Block" Margin="23,70,24.002,153">
            <Rectangle Fill="#FFDDDDDD" Stroke="#FFD7D7D7" Height="54" VerticalAlignment="Top" RadiusX="2" RadiusY="2"/>
            <Rectangle Fill="#FFE8E8E8" Margin="0,19,0,0" Stroke="#FFD7D7D7"/>
            <Label Height="22" Content="{Binding Source={StaticResource localisation}, Mode=OneWay, Path=.[Language.settings]}" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="10" FontFamily="Myriad Pro" Foreground="#FF585858"/>
            <TextBox MaxLength="2" x:Name="textTimeMin" Margin="175.145,34.336,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" FontFamily="Myriad Pro" Style="{DynamicResource style1Text}" Height="25.2" HorizontalAlignment="Left" Width="30"/>
            <TextBox MaxLength="2" x:Name="textTimeHour" Margin="132.868,34.336,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" HorizontalAlignment="Left" Width="30" FontFamily="Myriad Pro" Style="{DynamicResource style1Text}" Height="25.2"/>
            <Label Content=":" HorizontalAlignment="Left" Margin="162.868,35,0,0" FontSize="11" Foreground="#FF585858" FontFamily="Myriad Pro" VerticalAlignment="Top"/>
            <Label Content="{Binding Source={StaticResource localisation}, Mode=OneWay, Path=.[Language.timeOptions1]}" HorizontalAlignment="Left" Margin="6.148,36.332,0,0" VerticalAlignment="Top" FontSize="11" Foreground="#FF585858" FontFamily="Myriad Pro" Height="23.2"/>
            <Label Content="{Binding Source={StaticResource localisation}, Mode=OneWay, Path=.[Language.timeOptions2]}" HorizontalAlignment="Left" Margin="6.148,67.999,0,52.799" FontSize="11" Foreground="#FF585858" FontFamily="Myriad Pro" Height="23.202"/>
            <Custom:DatePicker x:Name="pickerDate" Margin="134,68.149,188,51.851" d:LayoutOverrides=", Height" FontFamily="Myriad Pro" IsTodayHighlighted="False" Foreground="#FF585858"/>
            <Button x:Name="btnAddTask" Content="{Binding Source={StaticResource localisation}, Mode=OneWay, Path=.[Language.addTask]}" HorizontalAlignment="Left" Margin="8,0,0,8" VerticalAlignment="Bottom" Style="{DynamicResource style1Btn}" Click="btnAddTask_Click" Height="24.65"/>
            <CheckBox x:Name="checkIgnoreDate" Content="{Binding Source={StaticResource localisation}, Mode=OneWay, Path=.[Language.ignoreDate]}" HorizontalAlignment="Right" Margin="0,0,105,55.706" VerticalAlignment="Bottom" Foreground="#FF585858" Background="{x:Null}" Checked="checkIgnoreDate_Checked" Unchecked="checkIgnoreDate_Unchecked" Height="15.96"/>
            <Rectangle x:Name="ignoreDateStrike" Fill="#FF444444" Height="1" Margin="6.148,0,199.32,64" VerticalAlignment="Bottom" Visibility="Collapsed"/>
            <Button x:Name="btnNow" Content="{Binding Source={StaticResource localisation}, Mode=OneWay, Path=.[Language.now]}" Margin="206.088,34.27,176.585,0" VerticalAlignment="Top" Style="{DynamicResource style1Btn}" Height="25.2" FontSize="9.333" Click="btnNow_Click"/>
        </Grid>

根据您的屏幕截图和代码,有几种不同的方法可以实现这一点

我建议使用三列三行的网格,其中列的大小是自动调整的。这将确保无论字段有多长,所有内容都能很好地排列和匹配

您的网格代码如下所示:

<Grid x:Name="Block">
<Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
...   
</Grid>

...   
然后,您只需为网格中的每个项目设置适当的行和列,而不是硬编码它们的边距

   <Button x:Name="btnAddTask" Grid.Row="1" .... />


这取决于您使用的布局类型。对于流体布局(使用WPF很容易),应在不重叠的情况下改变其位置。如果您使用的是画布,那么这些东西会给您带来各种各样的麻烦……我已经添加了用于布局的XAML,有什么建议吗?不要在布局中使用边距。有很多选项,您可以使用网格或易于使用的StackPanel来堆叠每一行,然后是每一行控件。不好的是,你必须改变你的(代码)布局很多…正如我看到你的评论,我已经开始改变我的代码使用stackpanels,我想这是最好的方式做到这一点。谢谢