我有一个带有以下TextBlock的WPF ResourceDictionary:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis}}">
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
ResourceDictionary包含在MergedDictionaries下的App.xaml中:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDictionary.xaml"/>
Run Code Online (Sandbox Code Playgroud)
在App.xaml中,我定义了BoolToVis转换器(再次,在下Application.Resources)
<BooleanToVisibilityConverter x:Key="BoolToVis" />
Run Code Online (Sandbox Code Playgroud)
当我启动我的应用程序时 - 我得到以下XamlParseException:
"在'System.Windows.Markup.StaticResourceHolder'上提供价值引发了异常."
InnerException是:
"找不到名为'BoolToVis'的资源.资源名称区分大小写."
我可以直接用App.xaml引用这个转换器(事实上,特定的XAML声明是相同的),并且在其他UserControl中没有问题.
这个特殊的代码在.NET 4.0 RC(和Beta2)下运行良好.仅当我升级到.NET 4.0 RTM时才会发生此错误.
我可以通过BooleanToVisibilityConverter在MyResourceDictionary.xaml中声明另一个并且像这样引用它来解决它:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
有什么理由我需要这样做吗?
我们正在使用Visual Studio Database Professional,它在部署时大量使用SQLCMD变量来区分环境.
我知道有几个指令可用于设置上下文(例如:connect for server name).脚本本身是否有办法强制执行SQLCMD模式?我们部署过程的一部分是让DBA检查并执行脚本,这将是一个很好的安全网(所以我不必提醒他们将执行模式设置为SQLCMD).