मैं कुछ अलग UserControls के लिए ControlTemplate टेम्पलेट के रूप में उपयोग कर रहा हूं और मैं UserControl के साथ टेम्पलेट से कॉलम की चौड़ाई साझा करना चाहता हूं। मैं "साझा आकार समूह" के साथ प्रयास कर रहा हूं। मेरे पास निम्न 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" के साथ समान चौड़ाई के हों, लेकिन मैं इसे काम पर नहीं ला सकता।

0
Milen Grigorov 19 फरवरी 2019, 15:16

1 उत्तर

सबसे बढ़िया उत्तर

टेम्प्लेट से 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>
2
mm8 19 फरवरी 2019, 12:25