我有一个简单的实例来测试MVVM,数据在MV中成功更改,但从未显示到WPF。
XAML
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Content="ABC" Foreground="{Binding LJogState}" FontSize="100"/>
</Grid>
XAML.CS
public partial class Function : UserControl
{
public Function()
{
InitializeComponent();
DataContext = new FunctionViewModel(this);
}
}
MV
public partial class FunctionViewModel : ObservableObject
{
public Function obj;
public bool a=false;
public FunctionViewModel(Function function)
{
obj= function;
Task.Run(() =>
{
while (true)
{
DeviceStateUpdata();
Thread.Sleep(300);
}
});
}
[ObservableProperty]
private Brush? lJogState;
private void DeviceStateUpdata()
{
LJogState = a ? Brushes.Red : Brushes.Green;
}
}
我在 MVVM 中给其他实例发了短信,效果很好,但是简历到一个新的实例,它根本不起作用。 我在这里找不到问题,太累了。 :(
我想你正在使用
CommunityToolkit.Mvvm
?如果是,请尝试将属性 NotifyPropertyChangedRecipientsAttribute
添加到您的代码中。
[ObservableProperty]
[NotifyPropertyChangedRecipients]
private Brush? lJogState;
为您添加绑定模式 Binding:WPF 的各种绑定模式有哪些?
<Label Content="ABC" Foreground="{Binding LJogState, Mode=OneWay}" FontSize="100"/>