C# 如何使用wpf在另一个UserControl中移动滚动元素?

C# 如何使用wpf在另一个UserControl中移动滚动元素?,c#,wpf,xaml,scroll,pagedown,C#,Wpf,Xaml,Scroll,Pagedown,如何将另一个usercontrol中的元素绑定到命令目标 这是主要的xaml <Grid> <StackPanel> <Button Height="200" x:Name="PageUpButton" FontFamily="Marlett" FontSize="40" Content="5" Command="{x:Static ScrollBar.PageUpCommand}" CommandTarget="{Binding Eleme

如何将另一个usercontrol中的元素绑定到命令目标

这是主要的xaml

<Grid>
    <StackPanel>
        <Button Height="200" x:Name="PageUpButton" FontFamily="Marlett" FontSize="40" Content="5" Command="{x:Static ScrollBar.PageUpCommand}" CommandTarget="{Binding ElementName=scrollViewerActive}"/>
        <local:posMenuChild x:Name="PosMenuChild"/>
        <Button Height="200" x:Name="PageDownButton" FontFamily="Marlett"  FontSize="40" Content="6" Command="{x:Static ScrollBar.PageDownCommand}" CommandTarget="{Binding ElementName=ScrollViewerActive }"/>
    </StackPanel>        
</Grid>


我应该指定什么作为CommandTarget? 如何使用顶部窗口中的按钮滚动下面UserControl中的元素

这是用户控制

<Grid Height="200">
    <WrapPanel Orientation="Vertical"  Height="200">
        <ScrollViewer VerticalScrollBarVisibility="Hidden" Name="ScrollViewerActive" CanContentScroll="True" >
            <StackPanel>
                <TextBlock Text="Test1" FontSize="35"/>
                <TextBlock Text="Test2" FontSize="35"/>
                <TextBlock Text="Test3" FontSize="35"/>
                <TextBlock Text="Test4" FontSize="35"/>
                <TextBlock Text="Test5" FontSize="35"/>
                <TextBlock Text="Test6" FontSize="35"/>
            </StackPanel>
        </ScrollViewer>
    </WrapPanel>
</Grid>

使用以下内容修改usercontrol的代码隐藏:

首先,添加一个
dependencProperty
以绑定到
ScrollViewer
类型的

public static readonly DependencyProperty ScrollTargetProperty = DependencyProperty.RegisterAttached(
        "ScrollTarget", typeof(ScrollViewer), typeof(UserControl1), new PropertyMetadata(null));

public static void SetScrollTarget(DependencyObject element, ScrollViewer value)
{
   element.SetValue(ScrollTargetProperty, value);
}

public static ScrollViewer GetScrollTarget(DependencyObject element)
{
   return (ScrollViewer)element.GetValue(ScrollTargetProperty);
}
不要忘记将
UserControl1
更改为您的usercontrol的类名

然后,将此属性设置为
ScrollViewerActive
(我是在控件的构造函数中完成的)

现在你可以这样绑着它了

<Button Command="{x:Static ScrollBar.PageUpCommand}" CommandTarget="{Binding Path=ScrollTarget, ElementName=PosMenuChild, Mode=OneWay}"/>

使用以下内容修改usercontrol的代码隐藏:

首先,添加一个
dependencProperty
以绑定到
ScrollViewer
类型的

public static readonly DependencyProperty ScrollTargetProperty = DependencyProperty.RegisterAttached(
        "ScrollTarget", typeof(ScrollViewer), typeof(UserControl1), new PropertyMetadata(null));

public static void SetScrollTarget(DependencyObject element, ScrollViewer value)
{
   element.SetValue(ScrollTargetProperty, value);
}

public static ScrollViewer GetScrollTarget(DependencyObject element)
{
   return (ScrollViewer)element.GetValue(ScrollTargetProperty);
}
不要忘记将
UserControl1
更改为您的usercontrol的类名

然后,将此属性设置为
ScrollViewerActive
(我是在控件的构造函数中完成的)

现在你可以这样绑着它了

<Button Command="{x:Static ScrollBar.PageUpCommand}" CommandTarget="{Binding Path=ScrollTarget, ElementName=PosMenuChild, Mode=OneWay}"/>