Разделитель сетки и минимальная ширина - PullRequest
2 голосов
/ 08 ноября 2010

Я пытаюсь установить MinWidth для своих столбцов.

MinWidth работает правильно для Column 0, но не для Column 2. Сплиттер просто перетаскивает, и я могу получить столбецбыть меньше заявленного MinWidth MinWidth, кажется, вступает в силу только в том случае, если Column Width имеет числовое значение, а не Auto .... Есть ли способ заставить его работать с Auto или просто * ??

Есть идеи?

    <!-- Content Area -->
    <Grid x:Name="ContentGrid"
          Grid.Row="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="32" Width="260"/>
            <ColumnDefinition Width="8" />
            <ColumnDefinition MinWidth="100" Width="*" />
        </Grid.ColumnDefinitions>

        <!-- Navigation  -->
        <ItemsControl Name="NavigationRegion" 
                  Regions:RegionManager.RegionName="NavigationRegion"
                  Grid.Column="0">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
        <!-- Splitter -->
        <controls:GridSplitter x:Name="GridSplitter" 
                               Grid.Column="1" 
                               VerticalAlignment="Stretch" 
                               HorizontalAlignment="Center" 
                               Background="{StaticResource SplitterBackgroundColor}" 
                               Width="8" 
                               UseLayoutRounding="True" 
                               BorderThickness="1"     
                               BorderBrush="Black"  
                               Height="Auto"/>
        <!-- Form -->
        <ItemsControl x:Name="MainRegion"
                      Grid.Column="2" 
                      Regions:RegionManager.RegionName="MainRegion">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>


    </Grid>

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

Я исправил это, установив MaxWidth для Column 0. Когда срабатывает SizeChanged, я получаю значение MaxWidth для Column 0 на основе текущего ActualWidth

Так что я также удалил MinWidth из Column 2.Вот модификации:

<!-- Content Area -->
<Grid x:Name="ContentGrid"
      Grid.Row="2">
    <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="32" Width="260"/>
        <ColumnDefinition Width="8" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

...

Тогда настройка события MaxWidth

this.SizeChanged += (s, e) =>
{
    double maxWidth = this.ActualWidth / 2.0;
    this.ContentGrid.ColumnDefinitions[0].MaxWidth = maxWidth;
}
0 голосов
/ 25 апреля 2014

В знакомой ситуации, например,

<Grid.ColumnDefinitions>
  <ColumnDefinitions Width="Auto"/>
  <ColumnDefinitions Width="12"/>
  <ColumnDefinitions Width="*"/>
</Grid.ColumnDefinitions>

С разветвителем посередине,

<GridSplitter Grid.Column="1" VerticalAlignment="Stretch"/>

Моя цель:

Автоширина в 1-м столбце предотвращает сплиттерот «вторжения» на него.Поэтому я хотел установить предел для сплиттера, чтобы он не выдвигал 3-й столбец (взвешенная ширина- *) за границы.

Использование IValueConverter для возврата половины ширины Mainwindow в качестве границы,

return (double)value/2;

Пробный (не работает),

<SomeContent Grid.Column="2"
    MinWidth="{Binding
               RelativeSource={RelativeSource AncestorType=Window},
               Path=ActualWidth,
               Converter={StaticResource minWidthConverter}}"/>  

Также пытался (также нерабочий),

<AnotherContent Grid.Column="0"
    MaxWidth="{Binding
               RelativeSource={RelativeSource AncestorType=Window},
               Path=ActualWidth,
               Converter={StaticResource minWidthConverter}}"/>  

Наконец (& рабочий ),

<GridSplitter Grid.Column="1" VerticalAlignment="Stretch"
    MaxWidth="{Binding
               RelativeSource={RelativeSource AncestorType=Window},
               Path=ActualWidth,
               Converter={StaticResource minWidthConverter}}"/>

Кто бы мог подумать о настройке самого сплиттера = D

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