IsEnabled для контейнера? - PullRequest
3 голосов
/ 29 октября 2010

Есть ли способ отключить все элементы управления внутри контейнера - например, сетку?Спасибо!

UPD: Хотя сетка Silverlight имеет свойство IsEnabled, свойства IsEnabled для Windows phone 7 Grid определенно не существует.

Ответы [ 4 ]

5 голосов
/ 14 апреля 2012

Оберните Grid или StackPanel с помощью ContentControl.ContentControls имеет свойство IsEnabled.

5 голосов
/ 29 сентября 2011

Для Silverlight я добавил ScrollViewer вокруг Grid. Поскольку ScrollViewer наследует Control, я мог бы установить для его свойства IsEnabled значение false, и это отключило все элементы управления внутри сетки.

2 голосов
/ 02 ноября 2010

После нескольких дней попытки отключить все дочерние элементы управления в Grid, я обнаружил следующее:

  1. Для WP7 Grid нет свойства IsEnabled
  2. Мы все еще можем выполнять итерацию по всем дочерним элементамконтролирует и устанавливает их свойство IsEnabled
  3. Мы также можем использовать свойство Visibility для сетки

Действительно, нет смысла показывать элементы управления, если они отключены, и дажеэкономит место и добавляет интерактивности, когда мы скрываем и показываем его в соответствии с пользовательскими данными.

Я согласен, что это не очень убедительный ответ, но это единственный, который у меня есть до сих пор.:)

0 голосов
/ 05 марта 2012

У меня есть еще один вариант для вас, используя StoryBoard.Когда ваш элемент управления находится в определенном состоянии, установите свойство IsEnabled контейнера.Это отключит контроль.Состояние в приведенном ниже примере является состоянием «ReorderEnabled».Я использовал его, чтобы отключить кнопки на элементе списка, чтобы пользователь мог сортировать элементы в списке.

                            <VisualState
                                x:Name="ReorderEnabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.IsEnabled)" Storyboard.TargetName="ContentContainer">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <System:Boolean>False</System:Boolean>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation
                                            Storyboard.TargetName="ContentContainer"
                                            Storyboard.TargetProperty="Opacity"
                                            To="0.5"
                                            Duration="0"/>
                                </Storyboard>
                            </VisualState>

Если вы не знакомы с состояниями.Лучший вариант для редактирования состояний - использовать Expression Blend!

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