我试图通过使用Visual State和Staticresouce作为Visual State的Setter中的值来更改Grid的背景。它在运行时工作正常,但设计师显示以下错误(这对我没有多大帮助):
异常:Der Text zu diesem Fehlercode wurde nicht gefunden。 (未知错误)
堆栈跟踪: 在Windows.UI.Xaml.Hosting.XamlUIPresenter.Render() 在Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderWorker() 在Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderScheduler.OnRender(Object object) 在Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderScheduler.b__26_0(对象o) 在System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象args,Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source,Delegate callback,Object args,Int32 numArgs,Delegate catchHandler)
属性值无效属性背景未知。 InnerException:无
这就是我的尝试:
<Grid x:Name="grid">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="TestGroup">
<VisualState x:Name="TestState">
<VisualState.Setters>
<Setter Target="grid.(Panel.Background)" Value="{StaticResource BackgroundBrush}" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="BackgroundBrush" Color="Black"/>
</ResourceDictionary>
<App>
...
<App.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Test.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</App.Resources>
</App>
答案 0 :(得分:0)
当前的 Blend 非常错误,所以如果你看到这样的错误,我也不会感到惊讶。
一种解决方法是,在Blend中重新打开包含此资源的页面。您应该会看到一个弹出的对话框(见下图)。然后从可用词典下拉列表中选择 Test.xaml 文件,然后点击“确定”。
通过这样做,混合将在项目属性下生成 DesignTimeResources.xaml 文件,它应该消除设计者的错误。
但是,我也注意到您的<ResourceDictionary.MergedDictionaries>
未包含在<ResourceDictionary>
内。难道不应该是这样的instread吗?
<App.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Test.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</App.Resources>
这确实是一个混合错误,甚至可以在内置资源中发生。要复制,请尝试构建项目,然后转到 States 选项卡,并在看到Blend Designer崩溃后立即选择VisualState
。请注意,我已在XAML Designer(如果支持)中关闭运行项目代码。
目前删除崩溃的唯一方法是重新打开xaml文件。