我有一个 .NET Maui 应用程序,应该将用户事件写入日志文件。我一直在做的是将这段代码放在每个基页或不继承该基页的页面中。
我了解到可以在依赖项注入级别使用按钮处理程序来完成此操作。我怎样才能实现这一目标?
public class BasePage : ContentPage
{
public BasePage()
{
this.Appearing += OnAppearing;
}
private void OnAppearing(object sender, EventArgs e)
{
AttachBehaviors(this);
}
private void AttachBehaviors(Element element)
{
var tree = this.GetVisualTreeDescendants();
foreach (Button cbx in tree.Where(el => el.GetType() == typeof(Button)).Cast<Button>())
{
cbx.Clicked += GlobalButtonClicked;
}
}
}
最简单的方法是使用样式和命令,
在您的应用程序级别资源中,您可以执行此操作
<Style TargetType="Button>
<Setter Property="Command" Value"{Binding ButtonClickedCommand}"/>
</Style>
在你的 BaseViewModel 中你需要添加这个命令:
public class BaseViewModel
{
public ICommand ButtonClickedCommand { get; set; }
public BaseViewModel()
{
ButtonClickedCommand = new Command(()=> WhateverActionYouWant());
}
private void WhateverActionYouWant()
{
//Your logging mechanism or whatever comes here.
}
}
请注意,在某些情况下,如果您的按钮位于列表视图或其他内容中,您可能需要手动重新分配此绑定。