C# 如何找到另一个控件UWP 8.1样式中定义的控件
这么说吧, 我有一个C# 如何找到另一个控件UWP 8.1样式中定义的控件,c#,uwp,C#,Uwp,这么说吧, 我有一个GridView,它使用样式,它定义了你在GridView中看到的几乎所有东西,并在不同的文件中定义 这使得很难接触到该样式中的控件。 问题是我无法更改它,因此GridView将包含其中的定义,因为它是程序中的标准 所以我要寻找的是一种访问GridView的样式中定义的按钮的方法 这是该样式的定义(大致如下): 我设法在代码中达到了ControlTemplate级别,但就是这样。 它位于namespaceWindows.UI.Xaml.Controls中,如果这很重要的话 如
GridView
,它使用样式
,它定义了你在GridView
中看到的几乎所有东西,并在不同的文件中定义
这使得很难接触到该样式中的控件。
问题是我无法更改它,因此GridView
将包含其中的定义,因为它是程序中的标准
所以我要寻找的是一种访问GridView
的样式中定义的按钮的方法
这是该样式的定义(大致如下):
我设法在代码中达到了ControlTemplate
级别,但就是这样。
它位于namespaceWindows.UI.Xaml.Controls
中,如果这很重要的话
如何找到另一个控件UWP 8.1样式中定义的控件
控件具有可用于检索实例化的ControlTemplate
可视化树中的命名元素的方法。但它是受保护的方法。因此,我们需要将此方法重新打包为公共方法
public sealed class MyGridView : GridView
{
public MyGridView()
{
this.DefaultStyleKey = typeof(GridView);
}
public DependencyObject GetChildWithName(string childName)
{
return GetTemplateChild(childName);
}
}
<Page
......
xmlns:local="using:InkCanvas"
......
<local:MyGridView x:Name="GlobalUserHeaderGridView" Style="{StaticResource GlobalUserHeader}"/>
我已经创建了该类,但xaml无法识别它。您是否像这样为MyGridView
添加了namesapcelocal:MyGridView
?在哪里添加它?不起作用。你看这个按钮不是这个GridView的子对象,所以你的方法返回。这是Style的孩子,但是Style是一个密封的类,所以我不能使用你的建议。我测试过,它工作得很好,你在你这边实现了上面的内容吗?
<GridView x:Name="GlobalUserHeaderGridView" Style="{StaticResource GlobalUserHeader}"/>
public sealed class MyGridView : GridView
{
public MyGridView()
{
this.DefaultStyleKey = typeof(GridView);
}
public DependencyObject GetChildWithName(string childName)
{
return GetTemplateChild(childName);
}
}
<Page
......
xmlns:local="using:InkCanvas"
......
<local:MyGridView x:Name="GlobalUserHeaderGridView" Style="{StaticResource GlobalUserHeader}"/>
var btn = GlobalUserHeaderGridView.GetChildWithName("AuthUserStyleButton")