我正在为Run-time exception (line 21): The type initializer for 'Telerik.JustMock.Core.Context.MockingContext' threw an exception.
Stack Trace:
[System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
[System.TypeInitializationException: The type initializer for 'Telerik.JustMock.Core.Context.MockingContext' threw an exception.]
at Program.Main(): line 21
创建ControlTemplate
,其中显示带边框的ContentControl
,其背景可以是彩色的。我创建了一个附加属性来保存一个属性,该属性定义是否显示背景。我似乎无法正确地将语法绑定到附加属性到模板中元素的TextBox
属性。
附属物是:
Visibility
public static class AttachedPropertyExtensions
{
public static readonly DependencyProperty
BackgroundVisible = DependencyProperty.RegisterAttached(
"BackgroundVisible",
typeof(Visibility),
typeof(AttachedPropertyExtensions),
new PropertyMetadata(default(Visibility)));
public static void SetBackgroundVisible(UIElement element, Visibility value)
{
element.SetValue(BackgroundVisible, value);
}
public static Visibility GetBackgroundVisible(UIElement element)
{
return (Visibility)element.GetValue(BackgroundVisible);
}
}
:
ControlTemplate
这些使用:
<ControlTemplate x:Key="BorderedTextBlock" TargetType="ContentControl">
<Grid Margin="{StaticResource TextControlMarginThemeThickness}"
BorderBrush="{StaticResource TextBoxBorderThemeBrush}"
BorderThickness="{StaticResource TextControlBorderThemeThickness}">
<Border x:Name="backgroundBorder"
Background="{TemplateBinding Background}"
Visibility="{Binding Path=con:AttachedPropertiesExtensions.BackgroundVisible, RelativeSource={RelativeSource Mode=TemplatedParent}}" />
<ScrollViewer HorizontalScrollMode="Disabled"
VerticalScrollMode="Enabled"
VerticalScrollBarVisibility="Visible">
<ContentPresenter Height="80"
TextWrapping="Wrap"
Margin="{StaticResource TextControlThemePadding}" />
</ScrollViewer>
</Grid>
</ControlTemplate>
HasContentConverter:
<UserControl ...
xmlns:con="using:Scanners.Tetra.UWPmvvm.Helpers">
...
<ContentControl x:Name="lblReturnText"
Template="{StaticResource BorderedTextBlock}"
Content="{Binding ReturnText}"
Background="#DDDDDD"
con:AttachedPropertyExtensions.BackgroundVisible="{Binding ReturnText, Converter={StaticResource HasContentConverter}}" />
<ContentControl x:Name="lblErrorText"
Template="{StaticResource BorderedTextBlock}"
Content="{Binding ErrorText}"
Background="#C03556"
con:AttachedPropertyExtensions.BackgroundVisible="{Binding ErrorText, Converter={StaticResource HasContentConverter}}" />
</UserControl>
运行应用程序(部署在ARM移动设备上)时,输出中会显示以下错误
class HasContentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
string val = (string)value;
string.IsNullOrWhiteSpace(val))
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed
}
...
当我改变
Error: BindingExpression path error: 'con:AttachedPropertiesExtensions' property not found on 'Windows.UI.Xaml.Controls.ContentControl'. BindingExpression: Path='con:AttachedPropertiesExtensions.BackgroundVisible' DataItem='Windows.UI.Xaml.Controls.ContentControl'; target element is 'Windows.UI.Xaml.Controls.Border' (Name='backgroundBorder'); target property is 'Visibility' (type 'Visibility')
到
Path=con:AttachedPropertiesExtensions.BackgroundVisible
(或带括号的任何内容)构建整个Path=(con:AttachedPropertiesExtensions.BackgroundVisible)
时出现错误:
ControlTemplate
如何设置绑定到属性?
答案 0 :(得分:0)
我无法在这里测试UWP,因为我们仍然在Win7上,但在WPF中,您的附加属性定义很好,包括名称。看起来我错了那个部分。我仍然只是按照惯例重命名,但WPF并不关心。也许UWP确实 - 我确定。
对我来说,测试代码的原因只是绑定路径。它需要围绕Path
的parens,因为它是附加属性,并且它们具有不遵循C#属性命名约定的复杂名称:
Visibility="{Binding (con:AttachedPropertyExtensions.BackgroundVisible), RelativeSource={RelativeSource TemplatedParent}}"
Path
周围的parens告诉它整个字符串表示一个精心设计的属性名称,因此它con:AttachedPropertyExtensions.BackgroundVisible
定义字段的DependencyProperty
。否则,它认为con:AttachedPropertyExtensions
应该是模板化父级的属性,它具有自己的属性BackgroundVisible
。但这甚至没有意义。即使这不是语法错误:
public Visibility con:AttachedPropertyExtensions{ get; set; }
......这不是你在这里尝试沟通的内容。
如果我将PresentationTraceSources.TraceLevel=High
添加到您的原始Binding
,那么调试跟踪输出中失败的部分就是:
System.Windows.Data警告:108:BindingExpression(hash = 4917414):在级别0 - 对于ContentControl.con:AttachedPropertyExtensions找到了访问者&lt; null&gt;
System.Windows.Data错误:40:BindingExpression路径错误:&#39; con:AttachedPropertyExtensions&#39;在&#39; object&#39;上找不到的属性&#39;&#39; ContentControl中&#39; (名称=&#39;&#39;)&#39 ;. BindingExpression:路径= CON:AttachedPropertyExtensions.BackgroundVisibility;的DataItem =&#39; ContentControl中&#39; (名称=&#39;&#39);目标元素是边境&#39; (名称=&#39;&#39);目标财产是“可见性”&#39; (键入&#39;可见性&#39;)
System.Windows.Data警告:103:BindingExpression(hash = 4917414):将第1级的项替换为{NullDataItem}