c++ - 从后台线程或计时器滴答更新与 viewmodel 属性绑定的 xaml 控件
问题描述
我有实现INotifyPropertyChanged
.
public ref class MyViewModel sealed: Windows::UI::Xaml::Data::INotifyPropertyChanged
{
public:
// Inherited via INotifyPropertyChanged
virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged;
property float Temperature
{
float get() { return m_temperature; }
void set(float temperature) { SetProperty(m_temperature, temperature, "Temperature"); }
}
protected:
void OnPropertyChanged(Platform::String ^ propertyName);
private:
float m_temperature = 0.0f;
protected private:
template<typename T>
bool SetProperty(T& storage, T value, Platform::String^ propertyName)
{
if (storage == value) return false;
storage = value;
OnPropertyChanged(propertyName);
return true;
}
}
在 MainPage 计时器滴答声中,我尝试更新相关控件,如下所示:
void MainPage::OnDeviceControllerPollingTick(Object^ sender, Object^ e)
{
Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
CoreDispatcherPriority::Normal,
ref new Windows::UI::Core::DispatchedHandler([this]()
{
const float temperature = 10.0f;
MyViewModelObject->Temperature = temperature;
}));
}
从计时器滴答声或后台线程更新绑定控制的正确方法是什么?
解决方案
推荐阅读
- php - Laravel - 我的解释不能完美地工作
- android - .NET Core Web API 推送到 Apple/Android 推送通知服务器
- jquery - 使用选择下拉菜单在选项卡之间切换
- react-native - 标题标题不显示
- printing - 媒体打印在 Safari 上显示白页
- c++ - 如何在 QSplashScreen 中禁用鼠标单击
- ruby-on-rails - 没有得到具体的答案
- php - 如果没有包含已删除产品的行,则无法显示包含有关 woocommerce 产品信息的 mysql wpdb 表;也无法对 html 表格进行分页
- threat-model - 如何在 Microsoft 威胁建模工具中表示 Azure Function?
- arrays - 在 Swift 中收集和随机化数据