gpt4 book ai didi

c# - WPF 上的嵌套网格问题

转载 作者:行者123 更新时间:2023-11-30 20:38:04 37 4
gpt4 key购买 nike

我正在使用嵌套网格。在主网格中,我有两个单选按钮,而在第二个网格中,我有两个额外的单选按钮和其他控件..

我希望整个网格有 3 行和 3 列。

相关代码为:

    <xctk:WizardPage Name="Page3" PageType="Interior"
Title="Stages"
Background="#FF27E0E0">
<xctk:WizardPage.CanSelectNextPage>
<MultiBinding Converter="{StaticResource NextFromPage3}">
<Binding ElementName="HR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="LR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="yes" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="no" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</xctk:WizardPage.CanSelectNextPage>

<Grid ShowGridLines="True" Margin="-5 -10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label x:Name="qual" Content="Select Quality:" FontSize="13.333" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<RadioButton x:Name="HR" Content="High-Resolution" FontSize="13.333" Grid.Column="1" Margin="5 10" VerticalAlignment="Top"/>
<RadioButton x:Name="LR" FontSize="13.333" Content="Low-Resolution" Grid.Column="2" Margin="5 10" VerticalAlignment="Top"/>
<Grid Grid.Row="1">
<Grid.Visibility>
<MultiBinding Converter="{StaticResource FilterConverter}">
<Binding ElementName ="HR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName ="LR" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</Grid.Visibility>
<Label x:Name="symbol" Content="Select Symbol:" Grid.Row ="1" Grid.Column="0" FontSize="13.333" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<ComboBox x:Name="symbolsCmbBox" FontSize="13.333" Grid.Row="1" Grid.Column="1" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left" ItemTemplate="{StaticResource cmbTemplate}" IsSynchronizedWithCurrentItem="True" SelectedIndex="0">
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource SymbolComboboxItemsFilter}">
<Binding ElementName ="HR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName ="LR" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</ComboBox.ItemsSource>
</ComboBox>
<Label x:Name="isExists" Content="Select Yes if process will perform:" Grid.Row ="2" FontSize="13.333" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<RadioButton x:Name="yes" Content="Yes" FontSize="13.333" Grid.Row="2" Grid.Column="1" Margin="5 10" VerticalAlignment="Top"/>
<RadioButton x:Name="no" Content="No" FontSize="13.333" Grid.Row="2" Grid.Column="2" Margin="5 10" VerticalAlignment="Top"/>
</Grid>
</Grid>

以上代码是 WPF 工具包中存在的向导的一部分。我上面的嵌套网格问题是控件未按预期定位。虽然我只使用了一个主网格,但并没有发生这个问题,但由于其他原因我需要嵌套网格..

编辑-第一个答案:我希望主网格是第一行(3 列),内部网格从第二行开始,总共包含两行(3 列),那么如何指定呢?

编辑-第二个答案:

第一行(主网格)与第二行和第三行(内部网格)不直 - 似乎主网格的两个单选按钮都仅位于 column=2 上,即使从xaml 代码。我的代码现在就像出现在下面的第二个答案中一样。

感谢您的建议!

最佳答案

您正尝试在内部网格上使用 Grid.Row 和 Grid.Column,但没有指定 RowDefinitions 或 ColumnDefinitions。如果您希望该网格的子项能够位于特定位置,则需要为内部网格指定它们。

编辑:如果我了解您当前的要求,您需要一个 3x3 网格和一个从第二行开始的 2x3 网格。 (对于外部,您可能只需要一个 2x3 的网格,但让我们使用现有的网格吧。)

您需要我上面提到的行和列定义,但您还需要做另外两件事。1. 确保您的子项的 Grid.Row 分别设置为 0 和 1,而不是 1 和 2,以便它们与内部网格重合。2. 确保内部网格使用 2 行和 3 列的跨度来填充外部网格拥有的区域。

它应该看起来像这样:(如果需要特定大小,请编辑行和列定义)

<Grid ShowGridLines="True" Margin="-5 -10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label x:Name="qual" Content="Select Quality:" FontSize="13.333" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<RadioButton x:Name="HR" Content="High-Resolution" FontSize="13.333" Grid.Column="1" Margin="5 10" VerticalAlignment="Top"/>
<RadioButton x:Name="LR" FontSize="13.333" Content="Low-Resolution" Grid.Column="2" Margin="5 10" VerticalAlignment="Top"/>
<Grid Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="3">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.Visibility>
<MultiBinding Converter="{StaticResource FilterConverter}">
<Binding ElementName ="HR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName ="LR" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</Grid.Visibility>
<Label x:Name="symbol" Content="Select Symbol:" Grid.Row ="0" Grid.Column="0" FontSize="13.333" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<ComboBox x:Name="symbolsCmbBox" FontSize="13.333" Grid.Row="0" Grid.Column="1" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left" IsSynchronizedWithCurrentItem="True" SelectedIndex="0">
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource SymbolComboboxItemsFilter}">
<Binding ElementName ="HR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName ="LR" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</ComboBox.ItemsSource>
</ComboBox>
<Label x:Name="isExists" Content="Select Yes if process will perform:" Grid.Row ="1" FontSize="13.333" Margin="5 10" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<RadioButton x:Name="yes" Content="Yes" FontSize="13.333" Grid.Row="1" Grid.Column="1" Margin="5 10" VerticalAlignment="Top"/>
<RadioButton x:Name="no" Content="No" FontSize="13.333" Grid.Row="1" Grid.Column="2" Margin="5 10" VerticalAlignment="Top"/>
</Grid>
</Grid>

关于c# - WPF 上的嵌套网格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419601/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com