z poziomu WinForms zakolorowanie tekstu w RichTextBox
w kodzie okna widoku robiłem tak:
rTxtBox_OdczytZ_PlanuZapisow.Select(indexStartKolorowania, dlugoscZakolorowania);
rTxtBox_OdczytZ_PlanuZapisow.SelectionBackColor = Color.Yellow;
w WPF z poziomu metody okna robię tak:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DodajTekstDo_RichTextBox("N:02:AG:45:Y3");
}
public void DodajTekstDo_RichTextBox(string nazwaWlasciwa)
{
var fd = new FlowDocument();
Paragraph tekst = new Paragraph();
tekst.Inlines.Add(new Run("Przednaźwie nazwy właściwej (1): "));
tekst.Inlines.Add(new Run(nazwaWlasciwa) { Background = Brushes.Yellow, FontWeight = FontWeights.Bold });
tekst.Inlines.Add(new Run(" ponaźwie nazwy właściwej (1).") { Background = Brushes.LightBlue });
tekst.Inlines.Add(new Run(Environment.NewLine));
tekst.Inlines.Add(new Run("Przednaźwie nazwy właściwej (2): "));
tekst.Inlines.Add(new Run(nazwaWlasciwa.ToUpper()) { Background = Brushes.Yellow, FontWeight = FontWeights.Bold });
tekst.Inlines.Add(new Run(" ponaźwie nazwy właściwej (2).") { Background = Brushes.LightBlue });
fd.Blocks.Add(tekst);
rTxtBox_OdczytZ_Mapowania.Document = fd;
}
(...)
}
Wynik tego kodu powyzej:
chciałbym to jakoś wciągnąć aby robić to z poziomu ViewModelu
Jak to zrobić dobrze w zgodzie z MVVM, bo próbując "na skróty" wciągając element widoku FlowDocument
do ViewModelu
nie da się, okazuje się ze nie można bindować do właściwości Document
kontrolki RichTextBox
bo nie jest DependencyProperty
?
public class MainViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string nazwaWlasciwosci)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(nazwaWlasciwosci));
}
public MainViewModel()
{
poleZmapowanych = new FlowDocument();
}
private FlowDocument poleZmapowanych;
public FlowDocument PoleZmapowanych
{
get { return poleZmapowanych; }
set { poleZmapowanych = value;
OnPropertyChanged(nameof(PoleZmapowanych));
}
}
}
proba bindowania
<RichTextBox IsEnabled="False" x:Name="rTxtBox_OdczytZ_Mapowania" Document="{Binding PoleZmapowanych}"/>