Как поделиться размером ColumnDefinition Width с помощью ControlTemplate? - PullRequest
0 голосов
/ 19 февраля 2019

Я использую ControlTemplate в качестве шаблона для нескольких различных UserControls, и я хочу поделиться шириной столбцов из шаблона с UserControl.Я пытаюсь с "SharedSizeGroup".У меня есть следующее ControlTemplate:

<ControlTemplate x:Key="baseTemplate" TargetType="UserControl">
        <ScrollViewer HorizontalContentAlignment="Stretch"
                HorizontalScrollBarVisibility="Disabled" VerticalAlignment="Stretch"
                  VerticalScrollBarVisibility="Disabled">
            <Grid Grid.Row="0">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <GroupBox x:Name="groupBoxAttributes" Header="Attributes"
                      HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0">
                    <Grid  Grid.IsSharedSizeScope="True">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition SharedSizeGroup="attr"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <Label Content="NodeClass:" Grid.Row="0"/>
                            <TextBox x:Name="txtNodeClass" Margin="0" HorizontalAlignment="Stretch"
                             Height="25" TextWrapping="NoWrap" VerticalAlignment="Top" Grid.Row="0" Grid.Column="1"/>
                        </Grid>
                        <ContentPresenter  Grid.Row="1"
                                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Grid>
                </GroupBox>
            </Grid>
        </ScrollViewer>
    </ControlTemplate>

И я использую его в UserControl в качестве шаблона:

<UserControl x:Class="myClass"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             Template="{DynamicResource baseTemplate}"
             Grid.IsSharedSizeScope="True"
             d:DesignHeight="447.533" d:DesignWidth="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="attr"/>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Label Content="Type Definition:" Grid.Row="0"/>
        <ComboBox Height="25"  VerticalAlignment="Top" Grid.Row="0" Grid.Column="1"/>
    </Grid>
</UserControl>

Я хочу, чтобы столбцы в сетках с SharedSizeGroup = "attr"быть такой же ширины, но я не могу заставить его работать.

1 Ответ

0 голосов
/ 19 февраля 2019

Удалите вложенное свойство Grid.IsSharedSizeScope из шаблона и установите его для элемента UserControl:

<UserControl Grid.IsSharedSizeScope="True" Template="{StaticResource baseTemplate}">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="attr"/>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Label Content="Type Definition:" Grid.Row="0"/>
        <ComboBox Height="25"  VerticalAlignment="Top" Grid.Row="0" Grid.Column="1"/>
    </Grid>
</UserControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...