В моем приложении WPF есть элемент управления RichTextBox.Я связываю текст для RichTextBox со свойством.Я пытаюсь добавить новую строку в текст, но это не работает.Я пытался добавить "\ n", "Environment.NewLine".Ничто из этого не работает.
Это то, что у меня есть для XAML:
<RichTextBox Name="EmailBody" resources:HtmlRichTextBoxBehavior.Text="{Binding EmailBody}" IsDocumentEnabled="True" AcceptsTab="True" ScrollViewer.VerticalScrollBarVisibility="Auto" SpellCheck.IsEnabled="True"/>
И это то, что у меня есть для свойства текста:
private string emailBody;
public string EmailBody
{
get { return emailBody; }
set
{
if (value != emailBody)
{
emailBody = value;
OnPropertyChanged("EmailBody");
}
}
}
Сейчасв моем классе ViewModel я пытаюсь добавить новую строку в свойство:
EmailBody += Environment.NewLine;
Это класс поведения для HtmlRichTextBoxBehavior:
public class HtmlRichTextBoxBehavior : ObservableObject
{
public static readonly DependencyProperty TextProperty =
DependencyProperty.RegisterAttached("Text", typeof(string),
typeof(HtmlRichTextBoxBehavior), new UIPropertyMetadata(null, OnValueChanged));
public static string GetText(RichTextBox o) { return (string)o.GetValue(TextProperty); }
public static void SetText(RichTextBox o, string value) { o.SetValue(TextProperty, value); }
private static void OnValueChanged(DependencyObject dependencyObject,
DependencyPropertyChangedEventArgs e)
{
var richTextBox = (RichTextBox)dependencyObject;
var text = (e.NewValue ?? string.Empty).ToString();
var xaml = HtmlToXamlConverter.ConvertHtmlToXaml(text, true);
var flowDocument = XamlReader.Parse(xaml) as FlowDocument;
HyperlinksSubscriptions(flowDocument);
richTextBox.Document = flowDocument;
}
private static void HyperlinksSubscriptions(FlowDocument flowDocument)
{
if (flowDocument == null) return;
GetVisualChildren(flowDocument).OfType<Hyperlink>().ToList()
.ForEach(i => i.RequestNavigate += HyperlinkNavigate);
}
private static IEnumerable<DependencyObject> GetVisualChildren(DependencyObject root)
{
foreach (var child in LogicalTreeHelper.GetChildren(root).OfType<DependencyObject>())
{
yield return child;
foreach (var descendants in GetVisualChildren(child)) yield return descendants;
}
}
private static void HyperlinkNavigate(object sender,
System.Windows.Navigation.RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}
Это неза работой.Есть идеи, что я тут делаю не так?