У меня есть пользовательский элемент управления MainMenu
, который я использую в своем MainWindow
виде, который имеет MainWindowViewModel
. MainMenu
разметка начинается как:Почему я получаю ошибку сборки в WPF UserControl и ее владельца Окно только во время разработки?
<UserControl x:Class="ApptEase.Client.Shell.Controls.MainMenu"
....
d:DesignHeight="25">
<UserControl.DataContext>
<shell:MainWindowViewModel />
</UserControl.DataContext>
<Menu Height="25" VerticalAlignment="Top">
<MenuItem Header="_File">
В режиме конструктора я получаю 2 ошибки в моем списке ошибок, оба:
Невозможно привести объект типа «» System.Windows.Application к типу ' ApptEase.Client.App '
Первое происходит в линии <shell:MainWindowViewModel />
в надзоре над пользовательским контролем выше. Второе происходит в строке <shell:MainMenu Grid.Row="0" />
отрезка разметки MainWindow
ниже.
MainWindow Выдержки:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<shell:MainMenu Grid.Row="0" />
<ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion" />
</Grid>
Мои MainWindowViewModel
происходит от BaseViewModel
:
public abstract class BaseViewModel : BindableBase
{
protected BaseViewModel()
{
AppState = ((App)Application.Current).AppState;
}
...
}
Если я закомментируйте ((App)Application.Current).AppState
линии, ошибки исчезают. Тем не менее я не вижу выхода, кроме «успешной сборки» в окне вывода при создании, и приложение запускается нормально, т. Е. BaseViewModel
ctor выполняет отлично, без исключения.
Если у меня нет опции, но чтобы принимать сообщения об ошибках безвредны, есть ли способ их подавить? Я не вижу директиву компилятора, работающего в разметке XAML.
Не могли бы вы предоставить полный пример (возможно, как архив)? Я не знаком с призмами, но это похоже на проблему с App.xaml/App.xaml.cs – cdmnk
@cdmnk. Я создал новый проект с двумя простыми дополнениями на основе шаблона проекта Prism Unity, но основное приложение используется только Unity для отображения главного окна. Вы можете увидеть ошибку, если выполните сборку. Вот ссылка на мой диск Google: https://drive.google.com/file/d/0BzxhSNxuhN5OUEV1RG1PWGtualk/view?usp=sharing – ProfK
@cdmnk Я думаю, что это может быть что-то вроде того, что во время разработки 'Application. Current' не относится к типу 'App', но только во время выполнения. – ProfK