为什么我只在设计时在WPF UserControl及其所有者窗口中出现构建错误?

时间:2017-01-14 15:28:07

标签: c# wpf xaml prism prism-6

我有一个{ "sort": [ { "_score": { "order": "desc" } } ], "query": { "bool": { "filter": { "geo_distance": { "distance": "10km", "geolocation": [ -73.980090948125, 40.747844918436 ] } }, "must": { "multi_match": { "query": "New York", "fields": [ "name^2", "city", "state", "zip" ], "type": "best_fields" } } }, "nested": { "path": "amenities", "query": { "bool": { "must": [ { "match": { "amenities.name": "Pool" } } ] } } } }, "aggs": { "reviews": { "nested": { "path": "reviews" }, "aggs": { "avg_rating": { "avg": { "field": "reviews.rating" } } } } } } 用户控件,我在MainMenu视图中使用了MainWindowMainWindowViewModel标记的开头如下:

MainMenu

在设计模式下,我的错误列表中出现2个错误,两个错误都是:

  

无法转换' System.Windows.Application'类型的对象输入   ' ApptEase.Client.App'

第一个出现在上面用户控制标记的<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"> 行中。第二个发生在下面<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; } ... } 行,则错误消失。然而,除了&#34;成功构建&#34;在我构建的输出窗口中,应用程序启动正常,即((App)Application.Current).AppState ctor执行正常,没有异常。

如果我没有选择但是接受错误消息是无害的,有什么方法可以抑制它们吗?我没有看到编译器指令在XAML标记中工作。

1 个答案:

答案 0 :(得分:0)

我不知道这只是一个'全能'还是一个合适的解决方案,但我通过将BaseViewModel ctor更改为:

来解决我的问题
protected BaseViewModel()
{
    if (!DesignerProperties.GetIsInDesignMode(new DependencyObject()))
    {
        _app = (App)Application.Current;
    }
}

似乎在设计模式下,Application.Current不属于App类型。