Trigger 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示属性条件和在满足条件时所执行的操作的类。
public ref class Trigger sealed : Microsoft::Maui::Controls::TriggerBase, Microsoft::Maui::Controls::Xaml::IValueProvider
[Microsoft.Maui.Controls.ContentProperty("Setters")]
[Microsoft.Maui.Controls.Xaml.AcceptEmptyServiceProvider]
public sealed class Trigger : Microsoft.Maui.Controls.TriggerBase, Microsoft.Maui.Controls.Xaml.IValueProvider
[<Microsoft.Maui.Controls.ContentProperty("Setters")>]
[<Microsoft.Maui.Controls.Xaml.AcceptEmptyServiceProvider>]
type Trigger = class
inherit TriggerBase
interface IValueProvider
Public NotInheritable Class Trigger
Inherits TriggerBase
Implements IValueProvider
- 继承
- 属性
- 实现
注解
该 Trigger 类适用于检查已向其添加的控件上的任何属性的值。 也就是说,其默认绑定上下文是已向其添加的控件。 若要在父级以外的控件上绑定,开发人员应改用该 DataTrigger 类。
下面的 XML 示例提示用户键入机密,即“文本颜色为红色”。 当用户键入机密时,Entry 文本将颜色更改为红色。 如果用户随后编辑文本与机密不同,则代码将返回默认颜色。 此示例演示如何使用触发器绑定到封闭控件。
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TriggerDemo"
x:Class="TriggerDemo.TriggerDemoPage">
<StackLayout VerticalOptions="Center">
<Label Text="Tell me the secret"
VerticalOptions="Center"
HorizontalOptions="Center" />
<Entry Placeholder="Type the secret here."
VerticalOptions="Center"
HorizontalOptions="Center">
<Entry.Triggers>
<Trigger TargetType="Entry"
Property="Text"
Value="The text color is red">
<Setter Property="TextColor" Value="Red" />
</Trigger>
</Entry.Triggers>
</Entry>
</StackLayout>
</ContentPage>
下面的示例演示开发人员如何使用触发器来响应事件,并使用 TriggerAction<T> 类更新控件属性的值。 该示例提示用户回答有关文本颜色的问题,然后在用户键入“文本颜色为红色”时调用 ColorTriggerAction
将文本变为红色。 开发人员应注意,虽然本示例在用户继续编辑字符串时不会将文本更改回默认颜色,但开发人员可以另外实现并指定退出操作以获取该结果。
在命名空间中 TriggerDemo
定义以下 ColorTriggerAction 类:
public class ColorTriggerAction : TriggerAction<Entry>
{
protected override void Invoke(Entry sender)
{
sender.TextColor = Color.Red;
}
}
开发人员可以使用下面的 XAML 创建通过将文本区域的颜色 Entry 更改为红色来响应机密字符串的页面。
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TriggerDemo"
x:Class="TriggerDemo.TriggerDemoPage">
<StackLayout VerticalOptions="Center">
<Label Text="What color is "The text"?"
VerticalOptions="Center"
HorizontalOptions="Center" />
<Entry Placeholder="Type answer here."
VerticalOptions="Center"
HorizontalOptions="Center"
BackgroundColor="White">
<Entry.Triggers>
<Trigger TargetType="Entry"
Property="Text"
Value="The text is red" >
<Trigger.EnterActions>
<local:ColorTriggerAction />
</Trigger.EnterActions>
</Trigger>
</Entry.Triggers>
</Entry>
</StackLayout>
</ContentPage>
构造函数
Trigger(Type) |
初始化一个新 Trigger 实例。 |
属性
BindingContext |
获取或设置一个对象,该对象包含由属于此 BindableObject属性的绑定属性所面向的属性。 这是一种可绑定属性。 (继承自 BindableObject) |
Dispatcher |
获取创建此可绑定对象时可用的调度程序,否则会尝试查找最近的可用调度程序(可能是窗口的/应用)。 (继承自 BindableObject) |
EnterActions |
获取将在满足触发条件时调用的 TriggerAction 对象的列表。 忽略 EventTrigger 类。 (继承自 TriggerBase) |
ExitActions |
获取在不再满足触发条件时调用的 TriggerAction 对象的列表。 忽略 EventTrigger 类。 (继承自 TriggerBase) |
IsSealed |
获取一个值,该值指示触发器是否密封。 (继承自 TriggerBase) |
Property |
获取或设置其值将与 Value 进行比较以确定何时调用资源库的属性。 |
Setters | |
TargetType |
TriggerBase 对象可附加到的对象类型。 (继承自 TriggerBase) |
Value |
获取或设置由 Property 属性命名的属性的值,它将导致资源库被应用。 |
方法
事件
BindingContextChanged |
当 BindingContext 属性的值更改时发生。 (继承自 BindableObject) |
PropertyChanged |
在属性值更改时发生。 (继承自 BindableObject) |
PropertyChanging |
在属性值更改时发生。 (继承自 BindableObject) |
显式接口实现
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
表示属性条件和在满足条件时所执行的操作的类。 (继承自 BindableObject) |
IValueProvider.ProvideValue(IServiceProvider) |
表示属性条件和在满足条件时所执行的操作的类。 |
扩展方法
GetPropertyIfSet<T>(BindableObject, BindableProperty, T) |
表示属性条件和在满足条件时所执行的操作的类。 |
SetAppTheme<T>(BindableObject, BindableProperty, T, T) |
表示属性条件和在满足条件时所执行的操作的类。 |
SetAppThemeColor(BindableObject, BindableProperty, Color, Color) |
表示属性条件和在满足条件时所执行的操作的类。 |
SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String) |
创建绑定并将其应用到属性。 |
SetBinding<TSource,TProperty>(BindableObject, BindableProperty, Func<TSource,TProperty>, BindingMode, IValueConverter, Object, String, Object, Object, Object) |
在源对象上的属性和目标对象的属性之间创建绑定。 |