Я действительно ищу хорошее свойство, чтобы всплывающее окно следовало за расширителем при изменении размера окна.
Расширитель и всплывающее окно определяются в стиле, но если расширитель перемещается вправо вместе с окномно не всплывающее окно
Если мы посмотрим на шаблон элемента управления:
<ControlTemplate x:Key="RightExpander" TargetType="{x:Type Expander}">
<Border SnapsToDevicePixels="true" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="3">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0"/>
</Grid.RowDefinitions>
<ToggleButton Width="{TemplateBinding ActualWidth}" Margin="0,1,0,1" MinHeight="0" MinWidth="30" x:Name="HeaderSite"
Style="{StaticResource LeftPanelCollpasedButtonStyle}" Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}"
ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}"
FontStretch="{TemplateBinding FontStretch}" FontStyle="{TemplateBinding FontStyle}"
FontWeight="{TemplateBinding FontWeight}" Foreground="{TemplateBinding Foreground}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Padding="{TemplateBinding Padding}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" DockPanel.Dock="Top"/>
<Popup x:Name="popup" AllowsTransparency="False" Margin="0,1,0,1" IsOpen="False" Placement="Bottom" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}">
<Grid >
<ContentControl x:Name="shadow" Visibility="Collapsed" HorizontalAlignment="Stretch" Style="{DynamicResource ShadowTemplate}"
VerticalAlignment="Stretch" Content="ContentControl" Opacity="1"
Margin="2,0,2,0" Foreground="#FF000000"/>
<ContentPresenter Opacity="1" MinWidth="220" HorizontalAlignment="Left" Margin="0,0,0,0" x:Name="ExpandSite" Focusable="false" Visibility="Collapsed" VerticalAlignment="Top" />
</Grid>
</Popup>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="true">
<Setter TargetName="shadow" Property="Visibility" Value="Visible"/>
<Setter TargetName="popup" Property="Placement" Value="Right"/>
<Setter TargetName="popup" Property="HorizontalOffset" Value="-5"/>
<Setter TargetName="popup" Property="IsOpen" Value="true"/>
<Setter TargetName="ExpandSite" Property="Margin" Value="5,5,5,5"/>
<Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
<Setter TargetName="shadow" Property="Visibility" Value="Visible"/>
<Setter TargetName="popup" Property="Placement" Value="Right"/>
<Setter TargetName="popup" Property="HorizontalOffset" Value="-5"/>
<Setter TargetName="popup" Property="IsOpen" Value="true"/>
<Setter TargetName="ExpandSite" Property="Margin" Value="5,5,5,5"/>
<Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Строка, в которой определено всплывающее окно, указывает «Placement» и «PlacementTarget», но это не влияет на поведениеЧто бы я ни изменил.Я думаю, что мне нужны триггеры, но я не знаю, с чего начать.Если бы кто-то мог мне помочь, было бы очень приятно.
Я использую шаблон контроля в своем коде следующим образом:
<Expander Header="MyExpander" Grid.Row="0" Style="{DynamicResource OutlookStyleExpanderStyle}" IsExpanded="true", Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" x:Name="proc" HorizontalAlignment="Left" Width="350" Margin="0,0,0,0">
<StackPanel Orientation="Vertical" Grid.Row="0" >
<StackPanel Orientation="Horizontal">
<Label FontSize="9" >LabelA</Label>
<TextBox Width="30"/>
<Label FontSize="9" >LabelB</Label>
<TextBox Width="30"/>
</StackPanel>
</Expander>