Вопрос был дан ответ в другой теме, но я не получаю полный ответ. Я сделал несколько прогулок и работу, но я не очень доволен этим. Так что я спрашиваю, как это сделать в MVVM patern.Как стать резидентом. Отменить из фоновой темы.
У меня очень неприятные проблемы с обновлением значения в текстовом поле в представлении. Сообщение Proprerty обновляется с моего обратного вызова, но не отображается в графическом интерфейсе. Свойство правильно привязано. Теперь я могу это сделать. Причина в том, что im не поднимает PropertyChanged в потоке пользовательского интерфейса, так как im вызывает его из обратного вызова. Я пытаюсь, но ничего не работает. Как повысить событие PropertyChange в потоке пользовательского интерфейса?
EDIT СНОВА ОБНОВИТЬ КОД:
namespace test
{
public class MainViewModel : INotifyPropertyChanged, IDataExchangeCallback
{
public MainViewModel()
{
Message = "TEST1";
}
void IDataExchangeCallback.Result(string result)
{
Message += result;
}
public void Register()
{
InstanceContext instanceContext = new InstanceContext(new MainViewModel());
DataExchangeClient client = new DataExchangeClient(instanceContext);
client.RegisterClient(Guid.NewGuid().ToString());
}
private string _message;
public string Message
{
get { return this._message; }
set
{
if (this._message != value)
{
this._message = value;
OnPropertyChanged("Message");
}
}
}
public event PropertyChangedEventHandler PropertyChanged; //ALWAYS NULL!!! BUT I HAVE INotifyPropertyChanged implement
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
Application.Current.Dispatcher.Invoke(() =>
handler(this, new PropertyChangedEventArgs(name)));
}
}
}
}
Мой PropertChange всегда нуль. ЗАЧЕМ? Когда я использую привязки, я могу подписаться на PropertyChanged.
EDIT Я все еще нужна помощь
Я не рядом с VS прямо сейчас, но у вас есть решение частично намеченному: Application.Current.Dispatcher.Invoke ((Action) (() => {обработчик (это, новые PropertyChangedEventArgs (ИмяСвойства))}); –
Это не ** работает, и я не знаю почему. – UserBuzzer
Не совсем уверен, но может быть, вы передаете новый экземпляр MainViewModel в: InstanceContext? Пробовали ли вы передавать: экземпляр экземпляра Экземпляр = new InstanceContext (this); – rauland