Ответ 1
Вот что бы я сделал, сначала я бы отделил свои многоразовые части от ресурсов и ссылался на них с помощью ContentControls
в XAML. Это относится к Popup
, а также к Button
. Однако я не хочу ограничивать себя только кнопкой, поэтому я буду использовать ContentControl
для этого:
Шаблон всплывающего окна:
<ControlTemplate x:Key="PopupTemplate">
<Border
Background="White"
BorderBrush="Black"
Padding="5"
BorderThickness="2"
CornerRadius="5">
<StackPanel Orientation="Vertical">
<Button Command="{Binding MyCommand}"
CommandParameter="5">5</Button>
<Button Command="{Binding MyCommand}"
CommandParameter="10">10</Button>
<Button Command="{Binding MyCommand}"
CommandParameter="15">15</Button>
<Button Command="{Binding MyCommand}"
CommandParameter="20">20</Button>
</StackPanel>
</Border>
</ControlTemplate>
Шаблон ContentControl
:
<ControlTemplate x:Key="MyControlTemplate" TargetType="ContentControl">
<Grid Name="MyControl">
<ContentPresenter Content="{TemplateBinding Content}"/>
<Popup Name="MyPopup" StaysOpen="True" Placement="Bottom">
<ContentControl Template="{StaticResource PopupTemplate}"/>
</Popup>
</Grid>
<ControlTemplate.Triggers>
<Trigger SourceName="MyControl"
Property="UIElement.IsMouseOver"
Value="True">
<Setter TargetName="MyPopup"
Property="Popup.IsOpen"
Value="True"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Теперь в главном окне XAML я создам следующее:
<ContentControl Template="{StaticResource MyControlTemplate}">
<Button Content="Test"/>
</ContentControl>
Если у вас есть какие-либо вопросы, я с удовольствием отвечу.