У меня есть случай, когда иерархия классов выглядит примерно так,
+---------------+
| UIElement |
|---------------| +----------------------+
| ... | | My Windows Application
| SomePropert{} | |----------------------|
| |<---+ |+--------------------+|
| | | ||MyUserControl ||
+---------------+ | ||--------------------||
+--------------+-----+ || ||
|FrameWorkElement | |+--------------------+|
|--------------------| |//Want to use |
| ... |<-+ |// SomeProperty; |
+--------------------+ | | |
+-----------+-+ | |
|Control | | |
|-------------| +----------------------+
| ... |<---+
+-------------+ |
+-----------+---+
| UserControl |
|---------------|<---+
| ... | |
+---------------+ |
+----------+-------+
| MyUserControl |
|------------------|
| SomeProperty{} |
| //Want to override
| |
+------------------+
Теперь в моем приложении (и во всех других приложениях, где я могу экспортировать этот MyUserControl) я могу установить SomeProperty
, то есть обрабатывается классом MyUserControl
, а не UIElement
?
Я сейчас делаю это, создавая объект MyUserControl и присваивая его элементу управления, который я добавил на свою страницу xaml. Прямо сейчас это выглядит так,
MyUserControl newControl = new MyUserControl();
web = windowsPhoneControl11; //windowsPhoneControll1 is the
//one that I added from toolbox.
// i.e., mycustomecontrol added from toolbox.
Итак, теперь, когда я использую «новый», он переопределяется. Но когда я экспортирую этот элемент управления, я не могу ожидать, что пользователь создаст новый объект и назначит его элементу управления, который используется на странице xaml.
Есть ли другой способ переопределить это свойство, чтобы присвоение этого свойства обрабатывалось классом MyUserControl, а не классом UIElement? Я имею в виду, что MyUserControl имеет элемент управления для установки этого свойства, так это то, что мне нужно проверить какое-то значение перед его присвоением. Если это, по крайней мере, не ожидаемое значение, мне нужно установить для него значение по умолчанию.
Ps: Прошу прощения за такой длинный вопрос, но я не смог выразить его более точно и не смог найти другого вопроса, связанного с этим. И это WindowsPhoneApp ... Не обычное приложение для Windows.