Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение созданных пользователем контролов 
:(
    Опции темы
soros26
Дата 23.12.2009, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Например есть форма WPF. Есть на форме кнопка. По нажатию кнопки должна создаваться кнопка (или вообще какой-нибудь контрол). 
Ну про это тут в соседней теме кое-что пояснили. 
Но вот пользователь насоздавал кнопок и др. контролов, т.е. он как бы создал меню приложения ( всем кнопкам задаются разные действия по нажатию на них) динамически сам и без знания программирования.
Так вот как сохранить все это ( все созданные контролы со всеми их свойствами, назначенными действиями, параметрами местоположения и т.д. ??
Про это интернеты умалчивают почему-то. Помогите, если кто сталкивался с этой проблемой. Т.е. основная задача состоит в том, чтобы при последующих запусках программы пользователь видел приложение с созданными им контролами. И даже мог изменять их. 
ps: Пока писал сообщение  мне показалось что надо XML каким-то образом использовать...типо сохранять в XML файл и как-то потом с ним оперировать.
Но как??
PM   Вверх
math64
Дата 23.12.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 2
Всего: 72



Если не используется биндинг и обработчики событий, можно использовать XamlWriter и XamlReader. Если созданным кнопкам давать  имена в соответствии их обработчиками, их можно восстановить после загрузки.
PM   Вверх
dazy
Дата 23.12.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Цитата

 Т.е. основная задача состоит в том, чтобы при последующих запусках программы пользователь видел приложение с созданными им контролами. И даже мог изменять их. 


Пользователь точно должен создавать новые контролы?

Или, все же, Вы хотите реализовать что то вроде индивидуальной конфигурации меню/тулбара?

Просто это, как бы, разные задачи.
PM MAIL   Вверх
soros26
Дата 23.12.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Цитата(dazy @  23.12.2009,  09:19 Найти цитируемый пост)
Пользователь точно должен создавать новые контролы?

Или, все же, Вы хотите реализовать что то вроде индивидуальной конфигурации меню/тулбара?

Просто это, как бы, разные задачи. 

Я знаю  какие могут использоваться обработчики, функции - все остальное  ( возможно что и цвет кнопок тоже...) делает пользователь.
Вообще это меню. А точнее меню-конструктор.  Используется стэк панель и в нее вставляются кнопки. 
PM   Вверх
math64
Дата 23.12.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 2
Всего: 72



Если меню не связаны тесно с WPF - лучше использовать свой формат XML и этот XML можно будет использовать где угодно (WinForms, WPF, C++, Java etc.)
Если использовать XAML - использовать можно будет только в WPF (SilverLight).
XamlLoader загрузит обработчики, но записывать их придётся вручную.
Если использовать XamlWriter, обработчики не записываются. Но если все обработчики известны, можно схитрить:
Создать enum и присоединенноё свойство Action:
Код

public enum Action {
  None,
  Load,
  Save,
  ...
}

public class ActionPanel : StackPanel {
    public static Action GetAction(DependencyObject d) { return (Action)d.GetValue(ActionProperty); }
    public static void SetAction(DependencyObject d, double value) { d.SetValue(ActionProperty, value); }

    public static readonly DependencyProperty ActionProperty =
        DependencyProperty.RegisterAttached("Action", typeof(Action), typeof(ActionPanel),
        new FrameworkPropertyMetadata(Action.None)
        {
          PropertyChangedCallback = OnActionChanged
        });

    private static void OnActionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
      if (d is Button)
      {
        var b = d as Button;
        if (e.NewValue is Action)
        {
          Action action = (Action)e.NewValue;
          switch(action) {
             case Action.Load: b.Click += OnLoad; break;
             case Action.Save: b.Click += OnSave; break;
             ...
          }
        }
      }
    }
    private void OnLoad(object sender, RoutedEventArgs args) {
      ...
    }
    private void OnSave(object sender, RoutedEventArgs args) {
      ...
    }
  ...
}


Это сообщение отредактировал(а) math64 - 23.12.2009, 13:27
PM   Вверх
WolfTheGrey
Дата 20.1.2010, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



Сохранение параметров контрола это баян. Выб лучше расказали как канвас сохранить или грид со всем его содержимым.
ВО!
PM MAIL   Вверх
math64
Дата 20.1.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 2
Всего: 72



Цитата(WolfTheGrey @  20.1.2010,  00:28 Найти цитируемый пост)
Сохранение параметров контрола это баян. Выб лучше расказали как канвас сохранить или грид со всем его содержимым.ВО!

Какие проблемы? пользуйтесь XamlWriter и XamlReader.
PM   Вверх
soros26
Дата 20.1.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Не в параметрах контрола и самом контроле проблема...проблема в том, как действия контролов сохранять и назначать динамически чтобы все это было..
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.