我可以帮您翻译成中文。这段内容是关于编程的,讲述了一个名为
在xaml类中,我有一个类型为
然而,所有内容都编译通过,但没有任何响应。我该如何将命令“重定向”到成员?
SettingsPage
的基本测试页面,其中包含以下XAML代码的按钮:<Button Text="Toggle Compass" Command="{Binding toggleCompassCmd}"/>
一个名为CompassTest
的类实现了INotifyPropertyChanged
接口,并添加了一个名为toggleCompassCmd
的新命令:
using System;
using System.ComponentModel;
using System.Windows.Input;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace HelloWorld.Models
{
public class CompassTest : INotifyPropertyChanged
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public ICommand toggleCompassCmd { private set; get; }
private CompassData m_data;
protected CompassData compassData
{
get { return m_data; }
private set { m_data = value; }
}
public event PropertyChangedEventHandler PropertyChanged;
public CompassTest()
{
// Register for reading changes, be sure to unsubscribe when finished
Compass.ReadingChanged += onCompassReadingChanged;
// setup toggle command
toggleCompassCmd = new Command(
execute: () =>
{
Console.WriteLine("This is execute of toggleCompassCmd!");
toggleCompass();
},
canExecute: () =>
{
return true;
});
}
void onCompassReadingChanged(object sender, CompassChangedEventArgs e)
{
var data = e.Reading;
Console.WriteLine($"Reading: {data.HeadingMagneticNorth} degrees");
// Process Heading Magnetic North
compassData = data;
onPropertyChanged("compassData");
}
protected void onPropertyChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("DateTime"));
}
}
public void toggleCompass()
{
Console.WriteLine("toggleCompass()");
try
{
if (Compass.IsMonitoring)
Compass.Stop();
else
Compass.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
Console.WriteLine("FeatureNotSupportedException: " + fnsEx.ToString());
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.ToString());
}
}
}
}
在xaml类中,我有一个类型为
CompassTest
的成员,应该像这样接收命令:public SettingsPage()
{
InitializeComponent();
compass = new CompassTest();
}
然而,所有内容都编译通过,但没有任何响应。我该如何将命令“重定向”到成员?