C# CustomerControl ZoomableScrollViewer

C# CustomerControl ZoomableScrollViewer,c#,wpf,custom-controls,C#,Wpf,Custom Controls,我尝试创建一个能够缩放和其他一些功能的客户控件 我认为scroll viewer是正确的基类。因此,我在从scrollviewer派生的第一个atempt中创建了一个UserControl。但是UserControl不能包含命名内容。基本上,我的控件应该像任何客户控件一样工作 所以我读到我应该在一个无外观的客户控件而不是用户控件中实现缩放行为 现在我很好奇如何将我的第一个用户控件atempt中的控件模板获取到我的客户控件模板中: <ScrollViewer.Template>

我尝试创建一个能够缩放和其他一些功能的客户控件

我认为scroll viewer是正确的基类。因此,我在从scrollviewer派生的第一个atempt中创建了一个UserControl。但是UserControl不能包含命名内容。基本上,我的控件应该像任何客户控件一样工作

所以我读到我应该在一个无外观的客户控件而不是用户控件中实现缩放行为

现在我很好奇如何将我的第一个用户控件atempt中的控件模板获取到我的客户控件模板中:

<ScrollViewer.Template>
    <ControlTemplate TargetType="{x:Type local:ZoomViewer}">
        <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <ContentControl Grid.Column="0" ManipulationStarting="ContentControl_ManipulationStarting" ManipulationDelta="ContentControl_ManipulationDelta"
                            IsManipulationEnabled="true">
                <ContentControl.LayoutTransform>
                    <ScaleTransform x:Name="PART_ScaleTransform"/>
                </ContentControl.LayoutTransform>
                <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Loaded="ScrollContentPresenter_Loaded"/>
            </ContentControl>
            <ScrollBar Name="PART_VerticalScrollBar" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}"
                       Grid.Row="0" Grid.Column="1"
                       ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
            <ScrollBar Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Grid.Column="0"
                       Value="{TemplateBinding HorizontalOffset}"
                       Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
            <Slider Grid.ColumnSpan="2" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" Width="300" Minimum="0" Maximum="100" Value="0"
                    x:Name="PART_Slider" ValueChanged="Slider_ValueChanged"/>
        </Grid>
    </ControlTemplate>
</ScrollViewer.Template>

如何在没有xaml的情况下向滚动查看器添加简单的缩放行为。
也许我的回答完全错了,但我无法理解。

理解你的问题有点困难,但我认为你正在尝试这样做:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="100*" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <ScrollViewer HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
        <Grid Width="200" Height="200" Background="AliceBlue">
            <Grid.LayoutTransform>
                <ScaleTransform ScaleX="{Binding ElementName=scaleControl, Path=Value}" ScaleY="{Binding ElementName=scaleControl, Path=Value}" />
            </Grid.LayoutTransform>
            <Button Width="64" Height="48">Hello</Button>
        </Grid>
    </ScrollViewer>
    <Separator Grid.Row="1" Margin="5" />
    <ScrollBar Name="scaleControl" Grid.Row="2" Minimum="1" Maximum="10" Orientation="Horizontal" />
</Grid>

你好