Переопределить DataContext в WPF - PullRequest
1 голос
/ 07 декабря 2011

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

  public new AutoSuggestViewModel DataContext 
             { get { return (AutoSuggestViewModel)base.DataContext; } 
               set { base.DataContext = value; } }

Это, к сожалению, имеет тенденцию нарушать отражение .Net и приводит к ошибке элемента управления в представлении проекта в Visual Studio, и еще хуже, когда я использую элемент управления как частьшаблона редактирования DataGridTemplateColumn вызывает ошибки и не работает должным образом, опять же из-за неправильного отражения.Это выглядит как AmbiguousMatchException на datagrid.BeginEdit()

Кто-нибудь знает, как обойти эту проблему и как этого добиться.И да, я думал об использовании другого свойства, такого как MyDataContext, которое возвращает приведение DataContext, но я ищу что-то более элегантное, если это возможно.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Что-то более элегантное было бы вообще не навязывать DataContext.На самом деле, для меня нет никакого смысла, почему ты хочешь это сделать.Почему бы просто не определить отдельное свойство зависимости, которое равно правильного типа?Затем потребители вашего элемента управления могут назначить его либо через привязку к своему контексту данных, либо с помощью любой другой стандартной идиомы WPF.

0 голосов
/ 07 декабря 2011

Существуют другие способы гарантировать, что назначен правильный тип объекта, например, вы можете создать обратный вызов измененного свойства в переопределенных метаданных, проверить тип нового значения и вызвать исключение, если вам «это не нравится»».

...