【发布时间】:2019-10-21 20:58:31
【问题描述】:
我有这个跟随资源,我能够通过 Id 找到资源,但我找不到一些如何按名称查找子元素的方法
<ControlTemplate x:Key="MainPageTemplate">
<Grid
BackgroundColor="White"
HorizontalOptions="FillAndExpand"
RowSpacing="0"
VerticalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<StackLayout
Grid.Row="0"
Grid.Column="0"
BackgroundColor="Transparent"
HeightRequest="50"
VerticalOptions="CenterAndExpand"
WidthRequest="50">
<ffimageloadingsvg:SvgCachedImage
Margin="10,0"
HeightRequest="24"
HorizontalOptions="StartAndExpand"
Source="resource://ABSCardApp.Resources.ic_menu.svg"
VerticalOptions="CenterAndExpand"
WidthRequest="24" />
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="Button_Clicked" />
</StackLayout.GestureRecognizers>
</StackLayout>
<ffimageloadingsvg:SvgCachedImage
Grid.Row="0"
Grid.Column="1"
Margin="0,0,0,8"
HeightRequest="20"
X:Name="LogoIcon"
HorizontalOptions="StartAndExpand"
Source="resource://ABSCardApp.Resources.logo.svg"
VerticalOptions="CenterAndExpand"
WidthRequest="96" />
....
我正在使用下面的代码来获取资源 ID
var resource = Application.Current.Resources["MainPageTemplate"];
但我在这里被激怒了,因为我无法在此结果上使用 FindByName,甚至将结果转换为 ResourceDictionary 或 ControlTemplate
作为resource.FindByName("LogoIcon")
我不确定我是否做得对。
【问题讨论】:
-
为什么?你想完成什么?
-
我正在尝试更改图像源,但此模板在许多页面中使用,所以我无法在使用它的页面中更改它
-
你真的应该通过绑定来做到这一点,而不是对模板进行黑客攻击