2013-11-20 1 views
0

У меня есть простой XAML страницы:Silverlight не может обновить layoutControl более чем в 5 - 30 раз

<Grid x:Name="LayoutRoot" dx:ThemeManager.ApplyApplicationTheme="True" Background="White" ShowGridLines="False" > 
     <Grid.RowDefinitions> 
      <RowDefinition Height="auto" /> 
      <RowDefinition Height="auto" /> 
      <RowDefinition Height="auto" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="600" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <dxlc:LayoutControl Name="lc" Height="200" Width="400" Orientation="Vertical" /> 

     <Button Content="Test" Click="button_Click" Grid.Row="1"/> 

    </Grid> 

обработчик Кнопка выглядит так:

 private void button_Click(object sender, RoutedEventArgs e) 
    { 
     Style style; 
     LayoutItem li; 
     Sbo sbo; 
     string xamlStyle = @"<Style 
TargetType=""dxlc:LayoutItem"" 
xmlns:x=""bla bla schemas.microsoft.com/winfx/2006/xaml"" 
xmlns=""bla bla schemas.microsoft.com/winfx/2006/xaml/presentation"" 
xmlns:dxlc=""bla bla schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"" 

> 

</Style>"; 

     this.lc.DeleteChildren(); 
     this.lc.AvailableItems.Clear(); 

     li = new LayoutItem(); 


     style = XamlReader.Load(xamlStyle) as Style; 
     Style basedOnStyle = App.Current.Resources["DefaultLayoutItemStyle"] as Style; 
     style.BasedOn = basedOnStyle; 

     li.Style = style; 

     sbo = new Sbo() { IsRequired = true, Label = "any label" }; 
     li.DataContext = sbo; 
     this.lc.Children.Add(li); 
    } 

Проблема заключается в том, что я могу запустить этот метод всего около 30 раз. В моем реальном приложении это примерно 2-4 попытки макс.

После этого приложение сбой на этой линии:

li.Style = style; 

мой на основе стиля выглядит так:

<Style TargetType="dxlc:LayoutItem" x:Name="DefaultLayoutItemStyle"> 
      <Setter Property="IsRequired" Value="{Binding IsRequired}" /> 
      <Setter Property="Label" Value="{Binding Label}" /> 
     </Style> 

проблема с требуется копаться выжидать. Silverlight не может получить значение этого свойства зависимостей. Это похоже на 30 x XamlReader.Load слишком много ...

У вас есть подсказка, как это решить?

Мне нужно динамически загружать стили, потому что пользователи могут их модифицировать.

Я попытался динамически загрузить MergedDictionaries, но результат тот же.

Спасибо ОЧЕНЬ много.

Том

+0

Я пробовал это с простой checkbox и stackpanel. В результате: стиль может быть назначен только 31 раз. Исправление 32. генерирует исключение. Исключено привязка IsChecked. – Tom

ответ

0

Я нашел его. Вам нужно назначить стиль клавишам и сохранить его в ресурсах. После этого я не могу достичь предела.