使用命令

时间:2016-02-03 15:54:37

标签: c# wpf wpftoolkit

我想制作额外的按钮块来控制Xceed.Wpf.Toolkit.Zoombox.Zoombox 在当前的实现中,Zoombox命令为RoutedUICommands,因此如果我使用Zoombox控件,请不要将它们重新接收。
这是一个示例XAML:

                                <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的控件?

1 个答案:

答案 0 :(得分:0)

RoutedCommand的工作原理是从生成命令的控件开始,然后在控件层次结构中冒泡,直到处理完为止。在你的情况下,RoutedCommand的路径将是:Button&gt; StackPanel&gt;窗口。 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>