У меня есть случай, когда иерархия классов выглядит примерно так:
+---------------+
| 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.