首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF ScrollViewer ContentControl中找到ContentControl?

如何在WPF ScrollViewer ContentControl中找到ContentControl?
EN

Stack Overflow用户
提问于 2015-03-19 02:00:53
回答 1查看 1.6K关注 0票数 0

WPF 4.5 / C#

我有一个应用程序,其中我有几个WPF Windows使用这个自定义内容控件。我在XAML中这样使用它:

代码语言:javascript
复制
<ContentControl Name="myControl" Style="{StaticResource ReservedSpaceScrollBar}"

在后面的代码中,我需要能够访问内部的ScrollViewer,所以我可以调用.ScrollToTop()

我试过了,但没用:

((ScrollViewer)this.myControl.FindName("Scroll")).ScrollToTop();

...but .FindName找不到ScrollViewer。我做错了什么?这是怎么做的?

样式的XAML如下..。

代码语言:javascript
复制
   <Style TargetType="{x:Type ContentControl}" x:Key="ReservedSpaceScrollBar">
      <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContentControl}">
               <ScrollViewer PanningMode="Both" VerticalScrollBarVisibility="Auto" x:Name="Scroll" FocusVisualStyle="{x:Null}">
                  <Grid>
                     <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition Width="Auto" />
                     </Grid.ColumnDefinitions>
                     <ContentPresenter />
                     <Border Width="{x:Static SystemParameters.VerticalScrollBarWidth}" x:Name="Placeholder" Grid.Column="1" />
                  </Grid>
               </ScrollViewer>
               <ControlTemplate.Triggers>
                  <DataTrigger Binding="{Binding ComputedVerticalScrollBarVisibility, ElementName=Scroll}" Value="Visible">
                     <Setter TargetName="Placeholder" Property="Visibility" Value="Collapsed" />
                  </DataTrigger>
               </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 20:31:51

查看VisualTreeHelper

使用该类,您可以查看元素的子元素;例如:

代码语言:javascript
复制
var childCount = VisualTreeHelper.GetChildrenCount(this.myControl);

for (int i = 0; i < childCount; i++)
{
    var child = VisualTreeHelper.GetChild(this.myControl, i);

    if (child.GetValue(NameProperty).ToString() == "Scroll")
    {
        ((ScrollViewer)child).ScrollToTop();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29136001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档