Coproject – demo RIA aplikace krok za krokem, díl 10,5
Jestli jste sledovali využití procesoru CoProjectem, nejspíše jste si všimli obrovského nárůstu zatížení v modulu To do po prvním načtení dat.
Jde o docela běžný problém, který se obvykle vyskytuje při použití prvků BusyIndicator nebo ProgressBar. Při hledání řešení jsem narazil například na tyto příspěvky: Silverlight forum, Silverlight toolkit issue, Appsolo blog. Po dalším hledání jsem narazil pouze na toto fórum. Naštěstí jsem ale narazil na toto video (vřele doporučuji): Silveright TV episode 57.
Když budeme chtít znalosti z videa využít v Coprojectu, měli bychom nejprve upravit App.xaml.cs:
private void Application_Startup(object sender, StartupEventArgs e)
{
Application.Current.Host.Settings.EnableRedrawRegions = true;
}
Teď spusťte aplikaci, otevřete modul To do a načtěte data ze serveru (pozor, pokud trpíte epilepsií!). Jak je vidět, máme problém.
Pojďme zkusit aplikovat řešení navrhované ve videu – upravte ShellView následovně:
<grid x:name="LayoutRoot">
<border style="{StaticResource ContentBorderStyle}">
<contentcontrol style="{StaticResource LogoIcon}">
</contentcontrol></border>
<border style="{StaticResource LeftBorderStyle}">
<textblock style="{StaticResource ApplicationTitleStyle}" text="Coproject">
...</textblock></border></grid>
Pak už jen upravte LeftBorderStyle v Custom.xaml:
<style basedon="{StaticResource LinksBorderStyle}" targettype="Border" type="text/css" x:key="LeftBorderStyle">
<Setter Property="Margin" Value="10,135,25,0"/></style>
Spusťte aplikaci – překreslování obrazovky teď funguje, jak má, a i zatížení procesoru je zpět na rozumné úrovni.


Komentáře