【发布时间】:2023-04-01 23:17:01
【问题描述】:
我的界面中有一个自定义按钮,使用以下样式定义:
<Style x:Key="KinectCustomButton" TargetType="k:KinectCircleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="k:KinectCircleButton">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60*"/>
<RowDefinition Height="40*"/>
</Grid.RowDefinitions>
<k:KinectCircleButton Grid.Row="0" VerticalAlignment="Bottom" Foreground="{TemplateBinding Foreground}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
<ContentPresenter x:Name="content"/>
</k:KinectCircleButton>
<ScrollViewer Grid.Row="1">
<TextBlock TextAlignment="Center" VerticalAlignment="Top" TextWrapping="Wrap" Text="{TemplateBinding Label}" Foreground="{TemplateBinding Foreground}" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" FontWeight="{TemplateBinding FontWeight}"/>
</ScrollViewer>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我在我的窗口中实例化了其中的六个按钮。现在我需要访问每个按钮的 ScrollViewer 元素。 我试过这个方法:How can I find WPF controls by name or type? 但它不起作用。我还尝试访问我的自定义 KinectCustomButton 的 Template 属性,但是如果我尝试找到 ScrollViewer 实例,我会得到来自模板而不是按钮实例中的那个(因此其中 TextBlock 的文本是空的)。有什么方法可以得到我想要的吗?
【问题讨论】:
-
Now I need to access the ScrollViewer element for each one of these buttons- 有什么用?不要在程序代码中操纵 UI 元素。 -
我在这里所做的是在我的滚动查看器元素中实现自动滚动,因此我需要获取对它们的引用才能应用我的自动滚动方法。如果你的意思是这样做会阻塞 UI 线程(或类似的东西),我已经处理好了
标签: c# wpf xaml controltemplate scrollviewer