c# - 如何找到以另一个控件 UWP 8.1 的样式定义的控件
问题描述
所以这就是交易,我有一个GridView
使用 a style
,它定义了你在其中看到的几乎所有内容,GridView
并在不同的文件中定义。
这使得很难到达其中的控件Style
。问题是我无法更改它,因此其中GridView
将包含定义,因为它是程序中的标准。
GridView
所以我正在寻找的是一种访问在Style
.
这是这种风格的定义(大致):
<Style x:Key="GlobalUserHeader" TargetType="GridView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GridView">
<Grid Background="#FF262524" ScrollViewer.VerticalScrollBarVisibility="Disabled">
...
<Grid Grid.Column="2" Margin="0">
...
<Button x:Name="AuthUserStyleButton" Grid.Column="1" Grid.Row="1" Style="{StaticResource AuthUserStyle}" HorizontalAlignment="Left" Margin="0">
<Button.Flyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem Text="{Binding StoreId, Converter={StaticResource TranslateConverter}, ConverterParameter='T_A_Common_SignOut'}" Command="{Binding SignOutCommand}"/>
</MenuFlyout>
</Button.Flyout>
</Button>
...
</Grid>
...
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这是GridView
定义:
<GridView x:Name="GlobalUserHeaderGridView" Style="{StaticResource GlobalUserHeader}"/>
我设法达到了ControlTemplate
我的代码的水平,但就是这样。如果重要的话,它在命名空间Windows.UI.Xaml.Controls
中。
解决方案
如何找到以另一个控件 UWP 8.1 的样式定义的控件
控件具有GetTemplateChild
可用于在实例化的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}"/>
用法
var btn = GlobalUserHeaderGridView.GetChildWithName("AuthUserStyleButton")
推荐阅读
- vb.net - 将 BigInteger 向左移动后出现意外值
- c++ - 将结构数据类型传递给 C++ 中的命名管道
- c# - . 主文件未在 asp.net iis 中呈现
- google-cloud-dataflow - 如何在谷歌云数据流中管理工人
- php - 如何更改 Joomla 表单值?
- excel - 将单元格转换为 BeforeClose VBA 中的一系列单元格
- yii2 - Yii2,如何在rest request中使用或操作符
- c# - Sphinx:sphinxQL 中的批量查询
- .htaccess - 如果 url 包含“.php”,则 htaccess 重定向到另一个页面
- node.js - 如何使 Localhost 节点 js Api 可公开访问