У меня есть простой 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, но результат тот же.
Спасибо ОЧЕНЬ много.
Том
Я пробовал это с простой checkbox и stackpanel. В результате: стиль может быть назначен только 31 раз. Исправление 32. генерирует исключение. Исключено привязка IsChecked. – Tom