Изменение размера сетки Silverlight Grid - PullRequest
1 голос
/ 15 сентября 2011

Я занимаюсь разработкой веб-приложения Silverlight и сейчас работаю над дочерним окном, которое разделено на три столбца.Слева для сообщений, которые не будут отображаться всегда, и два (в центре и справа), которые будут отображаться всегда.

Мой вопрос: как я могу заставить правый и средний столбец использовать все пространство, если в левом столбце нет необходимости показывать какие-либо данные?Так, если, например, мое дочернее окно имеет ширину 100, каждое из трех должно быть 33,333 или если левое окно отображать не нужно, то два других имеют 50. Есть ли способ без ошибок в коде?

Редактировать: дочернее окно выглядит следующим образом

<controls:ChildWindow ...
   <Grid x:Name="LayoutRoot" Margin="2">
       <Grid.ColumnDefinitions>
           <ColumnDefinition Width="*" />
           <ColumnDefinition Width="*" />
           <ColumnDefinition Width="*" />
       </Grid.ColumnDefinitions>
       <Grid Name="msgGrid" Grid.Column = 0/>
       <Grid Grid.Column = 1/>
       <Grid Grid.Column = 2/>
</controls:ChildWindow>

Я передаю значение bool (showMessageToUser) в конструктор дочернего окна и на основании этого должно быть определено, что делать

1 Ответ

1 голос
/ 15 сентября 2011

Сделать первый столбец размером «Авто», а вторые два столбца шириной 1 * (или просто *).

Первый столбец свернется до его содержимого (которое, по-видимому, вы будете показывать / скрывать), а вторые два будут занимать 50% каждый, так как размер * это просто отношение.

Поместите контейнер имени (другую сетку?) В первый столбец и управляйте его видимым флагом. Другие 2 колонки позаботятся о себе.

<controls:ChildWindow ...
   <Grid x:Name="LayoutRoot" Margin="2">
       <Grid.ColumnDefinitions>
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="*" />
           <ColumnDefinition Width="*" />
       </Grid.ColumnDefinitions>
       <Grid x:Name="msgGrid1" Grid.Column=0 Width="100"/>
       <Grid Grid.Column=1/>
       <Grid Grid.Column=2/>
</controls:ChildWindow>

Управляйте видимостью msGrid1, чтобы получить желаемый эффект. Если вы также хотите, чтобы пользователь контролировал ширину, если столбец 0 (например, с помощью GridSplitter), вам понадобится код позади, поскольку эти две функции не работают вместе.

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