【问题标题】:Programmatically adding a style causes exception以编程方式添加样式会导致异常
【发布时间】:2014-03-12 10:09:17
【问题描述】:

喂

我正在 Silverlight 中开展一个项目,偶然发现了一个我似乎无法解决的问题。

我有一堂课,我在其中以编程方式构建画布(用于打印)。这包含一个条形码,为此我使用 Telerik Barcode 元素。默认情况下,它会在条形下方显示条形码中的值,但我想删除它并发现我可以这样做:

<telerik:RadBarcodeEAN13 Height="120" Width="425" Text="123456789012">
<telerik:RadBarcodeEAN13.Resources>
<Style TargetType="Viewbox"> 
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</telerik:RadBarcodeEAN13.Resources>
</telerik:RadBarcodeEAN13>

我尝试将其转换为代码,以编程方式进行:

RadBarcodeCodebar bar = new RadBarcodeCodebar();
bar.Text = number;

System.Windows.Style style = new Style(typeof(Viewbox));
style.Setters.Add(new Setter(Viewbox.VisibilityProperty, "Collapsed"));

bar.Style = style;

不幸的是,最后一行抛出:

System.Windows.Markup.XamlParseException occurred
Message= [Line: 0 Position: 0]
LineNumber=0
LinePosition=0
StackTrace:
   bij MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   bij MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh)
   bij System.Windows.DependencyObject.SetValue(DependencyProperty property, DependencyObject doh)
   bij System.Windows.FrameworkElement.set_Style(Style value)
   bij SilverlightTestApplication.CardPrinter.SendStaffCardToPrinter(CardInfo card)
InnerException: 

如果我删除样式分配,它会正常工作。 有什么想法吗?

【问题讨论】:

    标签: c# silverlight telerik


    【解决方案1】:

    有两点需要修复。

    首先,VisibilityProperty的值应该是Visibility枚举而不是字符串:

    style.Setters.Add(new Setter(Viewbox.VisibilityProperty, Visibility.Collapsed));
    

    第二,查看 XAML,样式是在资源元素中声明的,而不是在样式元素中。所以 XAML 的那部分对应的 C# 代码如下:

    bar.Resources.Add(typeof(Viewbox), style);
    

    .Add() 方法的第一个参数是资源键。并且如果样式没有key,则应该填写样式的目标元素的类型。

    您的代码在这些修复后应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多