Я пытаюсь заставить TextBox показать свойство stringBody свойства CurrentDialog окна. Вот XAML часть:Связывание TextBox с объектом WPF
<TextBox x:Name="ComposerBox" Height="90.302" Margin="311,0,141.355,10"
...
Text="{Binding Body}"
ScrollViewer.CanContentScroll="True" SpellCheck.IsEnabled="True"
VerticalAlignment="Bottom">
Вот строка из конструктора окон:
MessagingBox.DataContext = CurrentDialog;
Я также попытался установить DataContext к этому без результата. Вот как определяется CurrentDialog:
private MessageDialog CurrentDialog { get; set; }
Вот определение класса MessageDialog:
[Serializable][DataContract]
public class MessageDialog
{
public string Name { get; private set; }
public UserData User { get; private set; }
private List<Message> Dialog = new List<Message>();
public string Body { get; private set; }
public MessageDialog(UserData data)
{
Name = data.Username;
User = data;
Body = "";
}
public void Add(Message msg)
{
Dialog.Add(msg);
Body += $"{msg.From}: {msg.Body} \n\n";
}
}
}
Привязка не работает. Я также хочу, чтобы это было односторонним.
Без хорошего [mcve], который надежно воспроизводит проблему, невозможно точно знать, почему ваш код не работает. Однако предлагаемый ответ - хорошее предположение. Если вы ожидаете, что свойство «Text» будет обновлено при изменении исходного свойства «Body», вам необходимо предоставить WPF, чтобы узнать, когда это происходит на самом деле. 'INotifyPropertyChanged' - обычный способ сделать это. –