【问题标题】:Grid SharedSizeGroup is not working across the whole viewGrid SharedSizeGroup 不能在整个视图中工作
【发布时间】:2019-06-19 20:48:10
【问题描述】:

我有一个简单的应用程序,我希望视图中的所有按钮都具有相同的大小。这段代码的问题是,Grid Row 0 中的所有按钮都具有相同的宽度,但 Grid Row 2 中的按钮不一样。请帮忙。

我希望网格行 2 中的按钮与网格行 0 的宽度相同。 (是否可以用这样的网格来做到这一点。请不要告诉我统一网格。我知道它适用于 UniformGrid,我也不想做 Binding ElementName=so and so,Path=ActualWidth)

<Grid Grid.IsSharedSizeScope="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" Grid.IsSharedSizeScope="True" x:Name="InstrumentOperationsPanel" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button x:Name="PrimeButton" Grid.Column="0" Content="ABCD"/>
            <Button x:Name="FlushButton" Grid.Column="1" Content="ABCDEFGHIJKL"/>
            <Button Content="ABCD" Grid.Column="2"/>
            <Button x:Name="PrimeFlush3TimesButton" Grid.Column="3" Content="ABCD"/>

        </Grid>
        <Separator Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        </Separator>

        <Grid Grid.IsSharedSizeScope="True" x:Name="BuiltInUserActionPanelForQX200" Grid.Row="2" VerticalAlignment="Top">

            <Grid.ColumnDefinitions>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <Button x:Name="DRDiagnosticsButton" Grid.Column="0"
                Content="ABCD"></Button>
            <Button x:Name="QXFieldAgentButton" Grid.Column="1"
                Content="ABCD"></Button>
            <Button x:Name="QX200MTSButton" Grid.Column="2"
                Content="ABCD"></Button>
            <Button x:Name="QX200MTSDetectorButton" Grid.Column="3"
                Content="ABCD"></Button>
        </Grid>
    </Grid>

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    您应该只在最外面的网格上设置 ISSharedSizeScope=True。

    从内部网格中删除 Grid.IsSharedSizeScope="True"(InstrumentOperationsPanel 和 BuiltInUserActionPanelForQX200)

    【讨论】:

      【解决方案2】:

      您需要进行一些更改。

      a) 在您的主网格中,

      <Grid Grid.IsSharedSizeScope="True">
      

      b) 在 InstrumentOperationsPanel、Grid 中,移除 Grid.IsSharedSizeScope

      <Grid Grid.Row="0"  x:Name="InstrumentOperationsPanel">
      

      c) 在 BuiltInUserActionPanelForQX200 Grid 中,移除 Grid.IsSharedSizeScope

      <Grid  x:Name="BuiltInUserActionPanelForQX200" Grid.Row="2" VerticalAlignment="Top">
      

      你的整个 Xaml 看起来不像

      <Grid Grid.IsSharedSizeScope="True">
              <Grid.RowDefinitions>
                  <RowDefinition Height="Auto"></RowDefinition>
                  <RowDefinition Height="*"></RowDefinition>
                  <RowDefinition Height="Auto"></RowDefinition>
              </Grid.RowDefinitions>
              <Grid Grid.Row="0"  x:Name="InstrumentOperationsPanel">
                  <Grid.ColumnDefinitions>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                  </Grid.ColumnDefinitions>
                  <Button x:Name="PrimeButton" Grid.Column="0" Content="ABCD"/>
                  <Button x:Name="FlushButton" Grid.Column="1" Content="ABCDEFGHIJKL"/>
                  <Button Content="ABCD" Grid.Column="2"/>
                  <Button x:Name="PrimeFlush3TimesButton" Grid.Column="3" Content="ABCD"/>
      
              </Grid>
              <Separator Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
              </Separator>
      
              <Grid  x:Name="BuiltInUserActionPanelForQX200" Grid.Row="2" VerticalAlignment="Top">
      
                  <Grid.ColumnDefinitions>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                      <ColumnDefinition SharedSizeGroup="A"></ColumnDefinition>
                  </Grid.ColumnDefinitions>
      
                  <Button x:Name="DRDiagnosticsButton" Grid.Column="0"
                      Content="ABCD"></Button>
                  <Button x:Name="QXFieldAgentButton" Grid.Column="1"
                      Content="ABCD"></Button>
                  <Button x:Name="QX200MTSButton" Grid.Column="2"
                      Content="ABCD"></Button>
                  <Button x:Name="QX200MTSDetectorButton" Grid.Column="3"
                      Content="ABCD"></Button>
              </Grid>
          </Grid>
      

      输出

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 1970-01-01
        • 2019-10-15
        • 1970-01-01
        • 2018-01-02
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        • 2018-08-15
        相关资源
        最近更新 更多