Корневой элемент Silverlight CustomControl - PullRequest
0 голосов
/ 16 декабря 2009

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

У меня сейчас есть

  1. шаблон generic.xaml отсортирован.
  2. Новый шаблон в папке blend, который позволит мне создать новый 'DaveControl'
  3. Возможность в blend добавлять к нему контент, который будет отображаться в contentpresenter.

Однако, если я запустил его, содержимое исчезнет. Это остается, если я добавляю элемент управления к пользовательскому контролю, но я не хочу, чтобы это произошло. тогда я не смогу вызывать базовые методы, так как UserControl наследует от Control и g.cs всегда будет жаловаться.

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

По сути, я просто хочу сказать New Dave Control, перейти к коду и написать один метод, «public override save»

Возможно ли это?

1 Ответ

0 голосов
/ 16 декабря 2009

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

Если вы не хотите сталкиваться с условиями гонки и объект не обнаружил ошибок в смешивании, измените порядок, в котором применяется шаблон.

Внутри конструктора для вашего пользовательского класса, вызовите

this.ApplyTemplate();

Прочтите эту замечательную идею, чтобы понять, почему:

http://pagebrooks.com/archive/2008/11/30/tweaking-onapplytemplate-event-timing-in-silverlight-2.aspx

Затем убедитесь, что у вас есть атрибут x: Class в вашем новом элементе управления. Это будет означать, что вы получите код, сгенерированный из вашего xaml, который называет все атрибуты и правильно анализирует ваш xaml.

...