1

我正在尝试通过使用 Visual State 和 Staticresouce 作为 Visual State 的 Setter 中的值来更改网格的背景。它在运行时工作得很好,但设计器显示以下错误(这对我没有多大帮助):


例外:Der Text zu diesem Fehlercode wurde nicht gefunden。(未知错误)

Stacktrace:在 Windows.UI.Xaml.Hosting.XamlUIPresenter.Render() 在 Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderWorker() 在 Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderScheduler.OnRender(Object对象)在 Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderScheduler.b__26_0(Object o) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 System.Windows.Threading.ExceptionWrapper .TryCatchWhen(对象源,委托回调,对象参数,Int32 numArgs,委托 catchHandler)

属性背景的属性值无效。内部异常:无


这是我尝试过的:

<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>

在此处输入图像描述

4

1 回答 1

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>

更新

这确实是一个 Blend 错误,甚至在内置资源中也会发生。要复制,请尝试构建项目,然后转到States选项卡并选择 a VisualState,在您将看到 Blend Designer 崩溃之后。请注意,我已关闭在 XAML 设计器中运行项目代码(如果支持) 。

目前,消除崩溃的唯一方法是重新打开 xaml 文件。

于 2015-08-17T10:48:11.873 回答