自定义视图上的多重触发器
Posted
技术标签:
【中文标题】自定义视图上的多重触发器【英文标题】:multitrigger on custom view 【发布时间】:2021-11-14 06:46:55 【问题描述】:我创建了一个名为“InfoButton”的自定义视图:
public class InfoButton : ImageButton
public string Glyph get; set; = "\U000F02FD";
public string Title get; set;
public string Text get; set;
public InfoButton()
Source = new FontImageSource() Glyph = Glyph, FontFamily = "materialdesign.ttf#materialdesign", Size= (double)new FontSizeConverter().ConvertFromInvariantString("Title"), Color = Color.Black ;
BackgroundColor = Color.Transparent;
Clicked += InfoButton_Clicked;
private void InfoButton_Clicked(object sender, EventArgs e)
AlertPopup.DisplayAlertPopup(Title, Text, 0, "Close");
现在我为它创建了一个触发器:
<models:InfoButton Glyph="󰖟" Title="some title" Text="some text" IsVisible="false" HorizontalOptions="EndAndExpand">
<models:InfoButton.Triggers>
<MultiTrigger TargetType="x:Type models:InfoButton">
<MultiTrigger.Conditions>
<BindingCondition Binding="Binding isPublic" Value="true"/>
<BindingCondition Binding="Binding isReadonly" Value="false"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="IsVisible" Value="true"/>
<Setter Property="Glyph" Value="󰖟"/>
</MultiTrigger.Setters>
</MultiTrigger>
</models:InfoButton.Triggers>
</models:InfoButton>
但我在编译时收到此错误:
XFC0001 无法解析类型“InfoButton(属性缺失或缺失访问器)”上的属性“Glyph”。
可能是什么问题?
感谢您的帮助。
【问题讨论】:
【参考方案1】:要简单地解决您的问题,请转到解决方案部分。要了解您的代码失败的原因,请参阅说明部分。
解决方案
您必须将您的 Glyph
属性转换为 BindableProperty,如下所示
public static readonly BindableProperty Glyphproperty = BindableProperty.Create(nameof(Glyph), typeof(string), typeof(InfoButton), "\U000F02FD");
public string Glyph
get return (string)GetValue(GlyphProperty);
set SetValue(GlyphProperty, value);
说明
可以在the docu for Setter.Property 中找到解释为什么您的代码因将Glyph
定义为简单属性而失败的原因
只有可绑定的属性可以用 Setter 设置。
【讨论】:
以上是关于自定义视图上的多重触发器的主要内容,如果未能解决你的问题,请参考以下文章
Android - 触发 MainActivity 从自定义视图中执行某些操作