Ciao a tutti...ho un piccolo problema con WPF...ho definito uno stile per le finestre della mia applicazione, che dovrebbe permettermi di avere tutte le finestre con icona, logo in alto a sinistra e sfondo. Lo stile è definito così in un ResourceDictionary:
codice:
<Style x:Key="WindowStyle" TargetType="{x:Type Window}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Grid>
<Rectangle Fill="#FFF0F8FF" Stroke="#FF000000"/>
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
<Image Margin="8,8,0,0" Source="/MyAssembly;component/Resources/Titolo.png" Stretch="Fill" Width="133" Height="40" HorizontalAlignment="Left" VerticalAlignment="Top" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsMouseOver" Value="True"/>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ResizeMode" Value="CanMinimize"/>
<Setter Property="Icon" Value="/MyAssembly;component/Resources/MFRIcon.ico" />
</Style>
Lo stile funziona perfettamente in tutti i form, incluso con Style="{DynamicResource WindowStyle}" tranne che in uno...la finestra in questione è molto semplice, l'XAML è questo:
codice:
<Window x:Class="MyAssembly.FrmReport"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Visualizza Report" Height="364" Width="578" WindowStartupLocation="CenterScreen" ResizeMode="CanResize" Loaded="Window_Loaded" Style="{DynamicResource WindowStyle}">
<Grid Name="LayoutRoot">
<WindowsFormsHost Margin="0,55,0,0" Name="ReportHost" />
</Grid>
</Window>
e nel codice l'unica operazione fatta è sostanzialmente nell'evento Loaded:
codice:
ReportHost.Child = new CrystalReportViewer ();
Il problema è questo: se la Grid nel form ha una dimensione specificata, tutto funziona perfettamente e vedo il report delle dimensioni corrette. Nel momento in cui la Grid è definita esattamente come sopra, e quindi con Width e Height settati su "Auto", quando apro la finestra, il WindowsFormsHost e la Grid assumono le stesse dimensioni dell'immagine di titolo prevista nello stile (133x40), e il report viene visualizzato in questo rettangolo minuscolo, mantenendo però il Margin del WindowsFormsHost...
Perchè accade tutto ciò? Vorrei poter mantenere la Grid con dimensioni "Auto" in modo che ridimensionando il form tutto si ridimensiona di conseguenza...ovviamente so che potrei fare tutto tramite codice, ma mi sembra un controsenso visto che WPF dovrebbe già permettere di fare queste cose...
Utilizzo VS 2008 SP1 con .NET Framework 3.5 SP1.
Se avete qualche consiglio sarà molto gradito!! Grazie mille a tutti!!