2016-02-03 6 views
1

Я хочу сделать дополнительный блок кнопок для управления Xceed.Wpf.Toolkit.Zoombox.Zoombox.
В текущей реализации команды Zoombox: RoutedUICommands, поэтому, если я их использую Zoombox, управление не возвращает их.
Вот пример XAML:wpftoolkit zoombox внешняя навигация с командами

       <xctk:Zoombox> 
            <Image Source="{Binding ImageAttachment.Path}" infrastructure:AttachedProperties.IgnoreVerticalAligment="True" /> 
           </xctk:Zoombox> 
           <StackPanel> 
            <Button x:Name="HomeButton" 
              Width="20px" 
              Height="20px" 
              Command="xctk:Zoombox.Home" 
              Style="{StaticResource TransparentButton}" 
              ToolTip="Go Home"> 
             <Image Margin="2" Source="{StaticResource HomeGlyph}" /> 
            </Button> 
            <Button x:Name="FitButton" 
              Width="20px" 
              Height="20px" 
              Margin="2,0" 
              Command="xctk:Zoombox.Fit" 
              Style="{StaticResource TransparentButton}" 
              ToolTip="Fit Content within Bounds"> 
               <Image Margin="2" Source="{StaticResource FitContentGlyph}" /> 
             </Button> 
           <StackPanel> 

Есть ли способ управления включают в маршрут RoutedUICommands?

ответ

0

RoutedCommand работает, начиная с элемента управления, который генерирует команду и пузырится по иерархии элементов управления до тех пор, пока не будет обработан. В вашем случае здесь путь RoutedCommand будет идти: Button> StackPanel> Window. RoutedCommand не пойдет в Zoombox, потому что это брат StackPanel, а не родитель.

Для того чтобы это работало, вам необходимо использовать свойство CommandTarget. CommandTarget заставляет RoutedCommand начинаться с цели, а затем прокладывать путь к дереву. Вы можете сделать это вот так:

<xctk:Zoombox x:Name="myZoomBox"> 
    <Image Source="{Binding ImageAttachment.Path}"/> 
</xctk:Zoombox> 
<StackPanel> 
    <Button x:Name="HomeButton" 
      Command="xctk:Zoombox.Home" 
      CommandTarget="{Binding ElementName=myZoomBox}"/> 
</StackPanel>