gpt4 book ai didi

c# - 在 xaml 中使用 backgroundworker 和绑定(bind)时 UI 不会更新

转载 作者:行者123 更新时间:2023-12-03 10:36:30 25 4
gpt4 key购买 nike

我目前正在尝试通过 backgroundworker 类更新我的 UI 中的文本框。这个后台工作人员在我的解决方案的 ViewModel 部分中,它仅在我的应用程序接收数据时发生(作为我的模型上的事件触发)。

我在我的 MainWindow xaml 文件中使用绑定(bind)将文本绑定(bind)到我的 ViewModel 中的属性,并且当设置断点时,它似乎存储了正确的值,即使它们仍未显示。

我不太确定 DoWork 事件和 RunWorkerCompleted 事件之间的区别。我有 DoWork 事件将数据包设置为接收到的最新数据包,完成后(RunWorkerCompleted),我将值分配给 ViewModel 中创建的属性。我是否正确实现了 backgroundworker 类?

对此的任何帮助将不胜感激。

看法

<TextBox Height="23" HorizontalAlignment="Left" Margin="577,70,0,0" Name="receiveVariableValueBox" VerticalAlignment="Top" Width="120" Text="{Binding Path=RxVariableValue}"/>

View 模型
public class DataPointsViewModel : INotifyPropertyChanged
{
public Model model;

BackgroundWorker receiveBackground;
RRTDataPacket rxDataPacket = new RRTDataPacket();

private int rxVariableValue;
public int RxVariableValue
{
get { return rxVariableValue; }
set
{
if(rxVariableValue != value)
{
rxVariableValue = value;
OnPropertyChanged(rxMajorVersion.ToString());
}
}
}

public void receivingUpdater(object sender, EventArgs e)
{
receiveBackground = new BackgroundWorker();
receiveBackground.DoWork += new DoWorkEventHandler(receiveBackground_DoWork);
receiveBackground.RunWorkerCompleted += new RunWorkerCompletedEventHandler(receiveBackground_RunWorkerCompleted);
receiveBackground.RunWorkerAsync();
}

public void receiveBackground_DoWork(object sender, DoWorkEventArgs e)
{
try
{
if (rxDataPacket != Engine.latestRxDataPacket)
{
rxDataPacket = Engine.latestRxDataPacket;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}

public void receiveBackground_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if(rxDataPacket != null)
{
RxMajorVersion = (int)rxDataPacket.majorVersion;
RxVariableValue = (int)rxDataPacket.variableValue;
}
}

最佳答案

您的 OnPropertyChanged 错误

public int RxVariableValue
{
get { return rxVariableValue; }
set
{
if(rxVariableValue != value)
{
rxVariableValue = value;
OnPropertyChanged("RxVariableValue");
}
}
}

关于c# - 在 xaml 中使用 backgroundworker 和绑定(bind)时 UI 不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com