Наследование в WPF - PullRequest
       6

Наследование в WPF

1 голос
/ 13 декабря 2010

Я хочу, чтобы элементы управления WPF наследовались следующим образом,

public class BaseView : UserControl
{
   ...  
}    

public class BaseListView : BaseView
{
   ...
}

public class TeachersListView: BaseListView
{
}

public class StudentsListView : BaseListView
{
}

Здесь «BaseListView» - это классифицированная база. Эти классы могут иметь несколько функций, которые зависят от ListView, присутствующего в «BaseListView». Я хочу наследовать этот «BaseListView» для нескольких представлений, которые могут добавлять несколько столбцов и с разными привязками данных Так что мое требование

class BaseListView : BaseView
{
  This class will have the UI parts like commandStrip and followed by "Empty ListView".

  This "ListView" may not hold any columns in it.
}    

class StudentsListView:  BaseListView
{    
   In **XAML** part, Columns and its appropriate Data Binding will be added. I need to access the controls in .cs file. so that i can access the controls.

  void FindAndHighlightColumn()
   {
     // get the columns to find and search the list view and highlight.
   }
}

Как мне достичь этого, как правильно это сделать.

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Я думаю, что вы хотите создать UserControl (Items- или ContentControl) с некоторыми базовыми функциями, такими как FindAndHighlightColumn ().

Вы можете создать свой BaseListView "lookless", а затем использовать ControlTemplates, чтобы получить несколько его разновидностей(создайте стили, такие как «StudentListViewStyle» и т. д., каждый с соответствующим ControlTemplate).ControlTemplate - это представление, поэтому вы можете указывать разные привязки в каждом шаблоне, чтобы получить доступ к элементам управления по их именам, вам необходимо определить соглашение с определенными частями с именем 'PART_XY' и т. Д., Посмотрите на стандартный ProgressBar-Control для примера.

0 голосов
/ 13 декабря 2010

Вы используете архитектуру Model-View-ViewModel? После прочтения вашего вопроса я сначала подумал, что я не буду использовать наследование в той степени, о которой вы думаете. Вместо этого я бы рассмотрел композицию.

Например, не могли бы вы создать композитный StudentsListView, составив файл .xaml из нескольких пользовательских элементов управления? Может быть, пользовательский элемент управления для отображения вашего commandStrip и другой пользовательский элемент управления для отображения соответствующего ListView (например, StudentListViewUserControl, TeacherListViewUserControl и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...