【问题标题】:WPF - How could I get a scrollviewer control from my XAML file in C#?WPF - 如何从 C# 中的 XAML 文件中获取滚动查看器控件?
【发布时间】:2015-03-04 05:08:12
【问题描述】:

我需要从 C# 中的 XAML 文件中获取特定的 ScrollViewer 控件,以便我可以尝试实现一个拖动和滚动系统,当一个项目被拖动到边缘附近时,它会相应地滚动。但我需要访问所有方法来执行此操作,但我找不到有关如何从 XAML 获取特定滚动查看器的任何信息。

我需要从一个单独的 .cs 文件访问它,大部分项目的转换器和函数都位于该文件中。由于我对此进行了大量研究,因此不确定是否会投反对票。以下是部分代码:

<ScrollViewer  x:Name="timelineScrollerRight" Grid.Row="1" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Disabled" PreviewMouseWheel="TimelineScrollerRightMouseWheel">

这是我要访问的 ScrollViewer 标记。我想在 ScrollViewer 中的另一个控件触发的 MouseMove 事件中更改 ScrollViewer 的 LineRight/LineLeft 属性。

C# 代码现在是裸露的,事件是空的,我希望能够声明一个变量以允许我更改 ScrollViewer 属性,以便在调用 MouseMove 事件时滚动 ScrollViewer 等等。 ScrollViewer 位于名为 TimelineAnimationView.xaml 的文件中,事件发生在代码隐藏 TimelineAnimationView.xaml.cs 中。但如果需要,我也想从单独的 .cs 文件中访问它。

【问题讨论】:

    标签: c# wpf xaml scrollviewer


    【解决方案1】:

    通常您使用x:Name 访问它:

    <ScrollViewer x:Name="scoller"/>
    

    如果您使用松散的 XAML 执行此操作,例如在 UserControlWindow 中,您只需在代码隐藏中将其作为私有实例变量 scroller 进行访问。

    如果您在模板中使用 ScrollViewer 执行此操作,则必须使用 GetTemplateChild(在 OnApplyTemplate 中)查找具有相关名称的子类型:

    scroller = GetTemplateChild("scroller");
    

    【讨论】:

    • 在 C# 代码隐藏中使用 x:Name 访问滚动查看器的语法是什么?
    • 您只需像使用任何字段一样使用scroller。例如,scroller.GetHashCode() 将返回哈希码,scroller.ActualWidth 返回 ScrollViewer 的当前宽度。
    • 对不起,我的意思是如何最初将 xName 滚动条放入代码隐藏中的变量中。我如何初始化它?
    • 如果控件具有名称属性,则应该已经在类级别的变量中自动创建了对的引用..
    • 您可以在TimelineAnimationView C# 代码中创建一个公共属性,返回timelineScrollerRight 字段的值。然后,您必须有权访问 TimelineAnimationView 对象才能访问该属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多