Mam wiele wyskakujących okienek w aplikacji (.NET Framework 4, WPF) i muszę ustawić jeden styl dla nich wszystkich. Przykład okienko wygląda tak:Jak napisać szablon stylu do sterowania pop-up?
<Popup PopupAnimation="Fade" MinWidth="600" MinHeight="200" Placement="Center" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="True" IsOpen="False">
<Grid Width="Auto" Height="Auto" Background="Gray">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Border BorderThickness="2" CornerRadius="8" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.RowSpan="2">
<Border.BorderBrush>
<SolidColorBrush Color="Gray"/>
</Border.BorderBrush>
<Border.Background>
<SolidColorBrush Color="White"/>
</Border.Background>
</Border>
<StackPanel Grid.Row="0">
<Label Foreground="Blue" Content="Popup_Title"/>
</StackPanel>
<GroupBox Grid.Row="1" Header="Popup example content">
<StackPanel>
...
</StackPanel>
</GroupBox>
</Grid>
</Popup>
Jak mogę wziąć stylów, takich jak granice i tło do szablonu stylu? Nie można zapisać stylu z wyskakującym narzędziem TargetType i zmodyfikować go za pomocą Property="Template"
, ponieważ kontrola wyskakujących okienek nie ma wartości Property="Template"
. Więc jak mogę napisać styl do tych wyskakujących okienek?
EDIT: Dokładne styl pracy:
<Style x:Key="PopupContentStyle" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Grid Width="Auto" Height="Auto" Background="Gray">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Border BorderThickness="2" CornerRadius="8" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.RowSpan="2">
<Border.BorderBrush>
<SolidColorBrush Color="Gray"/>
</Border.BorderBrush>
<Border.Background>
<SolidColorBrush Color="White"/>
</Border.Background>
</Border>
<StackPanel Grid.Row="0">
<Label Foreground="Blue" Content="Popup_Title"/>
</StackPanel>
<GroupBox Grid.Row="1" Header="Popup example content">
<StackPanel>
<ContentPresenter />
</StackPanel>
</GroupBox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Musiałem dodać kilka zmian, aby to rozwiązanie działało, ale ten pomysł był dokładnie tym, czego potrzebowałem. Wielkie dzięki! – Marta
Musiałem zdefiniować ContentPresenter w ten sposób, ponieważ w przeciwnym razie to rozwiązanie nie działa. Ale sam pomysł jest tym, czego potrzebuję - również dzięki! –