2014-03-12 2 views
0

HiyПрограммных добавить стиль вызывает исключение

Я работаю над проектом в Silverlight и наткнулся accross вопроса я не могу решить.

У меня есть класс, где я создаю холст программно (для печати). Он содержит штрих-код, для которого я использую элемент 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: 

Если удалить задание стиля, она работает как положено. Любые идеи?

ответ

1

Есть два момента, которые необходимо исправить.

Первый, значение VisibilityProperty должно быть Visibility перечисление вместо строки:

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

Второй, глядя на XAML, стиль объявлен в элементе ресурсов вместо элемента стиля. Так, соответствующий C# код для этой части XAML выглядит следующим образом:

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

первый аргумент .Add() метода является ключевым ресурсом. А в случае стиля без ключа он должен быть заполнен типом целевого элемента стиля.

Ваш код должен хорошо работать после этих исправлений.

+0

Я проверю это завтра, спасибо! – KWyckmans

Смежные вопросы