2009-10-14 2 views
2

Что считается лучшим способом включения или отключения нескольких элементов управления в Silverlight в одно и то же время (текстовое поле, поле со списком, автозаполнение и т. П.)?Включить или отключить управление несколькими элементами в Silverlight

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

  • Я мог бы рекурсивно перебирать ребята и устанавливать их свойства соответствующим образом, но это кажется неэлегантным.

  • В идеале, я хотел бы просто установить какое-либо свойство disable-like в родительском контейнере элементов управления, что даже отключает TextBlocks, похожий на форму Windows.

Есть ли способ отключить родительский контейнер?

ответ

3

Вы можете использовать ViewModel подход, аналогичный ответ в StackOverflow 1545844

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

+0

Это единственный реальный ответ! +1 – Stimul8d

1

Обычно я всегда создаю класс ControlHandler, который выполняет все обновления на моих элементах управления. (Просто чтобы разделить проблемы)

В последнее время нам пришлось сбросить все элементы управления в форме и не хотеть проходить через каждый элемент управления.

Вся связанная с управлением логика данных обновляется в классе ControlHandler.

Затем мы применяем только значения соответствующих свойств/свойств к нашим элементам управления.

Это обходное решение, но работало довольно хорошо, а также чисто для нас.

Есть, конечно, более эффективные способы решить, что ..

+0

Shaharyar ... можете ли вы немного разобраться? Перебираете ли вы элементы управления из вашего класса ControlHandler, или ваши средства управления реализуют это каким-то другим способом? Благодарю. – Feckmore

+0

Вы можете создать свои собственные контроллеры с помощью Handler-Interface, которые будут использоваться для изменения элементов управления. Но это означало бы кодировать немного больше и расширять каждый элемент управления, который вы хотите использовать, и регистрировать его в глобальном/статическом списке. Что я сделал, было довольно просто. Я знаю, какие контроллеры я использую, поэтому я просто закодировал значения.Указатели в C# также могут быть использованы для этого! Вы можете сделать функцию, которая принимает (ref Controller c) аргументы. –

1

Я искал возможность отключения нескольких элементов управления при извлечении данных из веб-службы. Управление BusyIndicator получило мне то, что мне было нужно, с минимальными усилиями. Возможно, это будет неплохое решение для других.

0

Оберните с помощью UserControl и установите его свойство IsEnabled.

...

4

Используйте ContentControl Silverlight обеспечивает.

<ContentControl x:Name="GroupOfControls" >...Your controls...</ContentControl> 

//Enable and Disable 
GroupOfControls.IsEnabled = false; 
Смежные вопросы