Переопределить свойство, определенное в базовом классе

У меня есть случай, когда иерархия классов выглядит примерно так,

   +---------------+
   | 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.

15
задан Ajai 20 February 2012 в 20:39
поделиться