2013-12-07 6 views
3

У меня есть приложение WPF, содержащее сетку. Сетка разбивается на 3 столбца, а 3-я сетка имеет нулевую ширину при загрузке.WPF Изменение ширины столбца во время выполнения

У меня есть два datagrids в двух других столбцах. Когда выбранный элемент в одном из данных datagrid изменяет другие изменения в datagrid, он отображает значения, т. Е. Шаблон главной детали. Все это прекрасно работает.

В наборе данных есть одно значение, которое, если выбрано, я хочу, чтобы этот третий столбец менял ширину от нуля до 2 *. Я не знаю, как это сделать?

EDIT

Я хотел бы добиться этого с помощью XAML. Я смотрю на триггеры данных & преобразователей значений. Я быстро написал код ниже, чтобы проверить. Я прочитал, что установка столбца в ширину = 0, вероятно, выше в списке приоритетов свойств зависимостей. В любом случае, чтобы сделать это, или мне нужно будет использовать код?

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="0"/> 
    </Grid.ColumnDefinitions> 

    <DataGrid Grid.Column="0" 
       ItemsSource="{Binding OrderList}" 
       SelectedItem="{Binding OrderSelected}"     
       AutoGenerateColumns="True">          
    </DataGrid> 

    <TextBox Grid.Column="1" Text="{Binding OrderSelected.Name}"> 
    </TextBox> 

    <Grid x:Name="columnHideSeek" Grid.Column="2" Background="Blue"> 
     <Grid.Style> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark"> 
         <Setter Property="Grid.Width" Value="10"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Grid.Style> 
    </Grid> 

</Grid> 

ответ

6

Ваш файл XAML должен выглядеть следующим образом:

<Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
     <ColumnDefinition Name="thirdColumn" Width="0"/> 
    </Grid.ColumnDefinitions> 
</Grid> 

И выбран DataGrid сфера событий в коде позади файла:

GridLength g2 = new GridLength(2, GridUnitType.Star); 
thirdColumn.Width = g2; 
+0

Привет спасибо за ответ. Я надеялся добиться этого через xaml и сохранить шаблон mvvm, который я пытаюсь достичь. Я смотрел триггеры данных и преобразователи ценности, однако не могу понять, как решить мою проблему – mHelpMe

Смежные вопросы