Сетка SharedSizeGroup не работает во всем представлении - PullRequest
0 голосов
/ 26 января 2019

У меня есть простое приложение, в котором я хочу, чтобы все кнопки в представлении были одинакового размера. Проблема с этим кодом заключается в том, что все кнопки в строке сетки 0 имеют одинаковую ширину, но кнопки в строке сетки 2 не одинаковы. Пожалуйста, помогите.

Я хочу, чтобы кнопки в строке сетки 2 имели ту же ширину, что и строка сетки 0. (Возможно ли сделать это с помощью Grid, как это. Пожалуйста, не говорите мне Uniform Grid. Я знаю, что это работает с UniformGrid, и я также не хочу делать Binding ElementName = так и так, 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>

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Вам понадобится пара изменений.

a) В вашей основной сетке

<Grid Grid.IsSharedSizeScope="True">

b) В панели управления прибором, сетке, удалении сетки. 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>

Вывод

enter image description here

0 голосов
/ 26 января 2019

Вы должны установить ISSharedSizeScope = True только на самой внешней сетке.

Удалить Grid.IsSharedSizeScope = "True" из внутренних сеток (InstrumentOperationsPanel и BuiltInUserActionPanelForQX200)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...