MaterialDesignInXAML / MaterialDesignInXAML/MaterialDesignInXamlToolkit
MaterialDesignFlowDocument style missing?
Personne n'a encore pris cette issue.
- Langage dominant
- C#
- Étoiles
- 16.3k
- Forks
- 3.5k
- Merge moyen
- 1 j 22 h
- PR mergées (30 j)
- 8
Description
**Is your feature request related to a problem? Please describe.**
In order to get better performance compared to RichTextBox, I display a FlowDocumentScrollViewer with a binding to a FlowDocument of the ViewModel.
```
```
**Describe the solution you'd like**
I'd like a simple:
```
```
**Describe alternatives you've considered**
Here is the extension method dealing manually with style..
```
public static void AppendLogEvents(this FlowDocument flowDocument, IList logEvents)
{
var lastParagraph = flowDocument.Blocks.LastBlock as Paragraph;
if (lastParagraph == null)
{
lastParagraph = new Paragraph();
flowDocument.Blocks.Add(lastParagraph);
}
// Create a new style based on the MaterialDesignTextBoxBase style
var spanStyle = new Style(typeof(Span));
//spanStyle.BasedOn = (Style)Application.Current.Resources["MaterialDesignTextBoxBase"];
//spanStyle.Setters.Add(new Setter(TextElement.FontSizeProperty, 7.0));
var materialDesignSourceStyle = (Style)Application.Current.Resources["MaterialDesignWindow"]; //MaterialDesignTextBlock
var materialDesignSourceStyle2 = (Style)Application.Current.Resources[typeof(MaterialDesignExtensions.Controls.MaterialWindow)];
// Transfer all properties to spanStyle
foreach (Setter setter in materialDesignSourceStyle.Setters.Union(materialDesignSourceStyle2.Setters))
spanStyle.Setters.Add(new Setter(setter.Property, setter.Value));
foreach (var logEvent in logEvents)
{
// Render log message with a template
var renderedMessage = logEvent.RenderMessage();
var span = new Span(new Run(renderedMessage));
span.Style = spanStyle; // Apply the new style to the Span
if (logEvent.Level == LogEventLevel.Warning)
span.Foreground = Brushes.Orange;
else if (logEvent.Level == LogEventLevel.Error || logEvent.Level == LogEventLevel.Fatal)
span.Foreground = Brushes.Red;
else { } //NTD, will let light/dark mode fontcolor
lastParagraph.Inlines.Add(span);
lastParagraph.Inlines.Add(Environment.NewLine);
}
}
```
**Additional context**
Add any other context or screenshots about the feature request here.
Any thing I missed?
Feel free to recommend another approach!
Regards,
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par l’exemple de FlowDocumentScrollViewer et inspectez les ressources existantes MaterialDesignWindow et MaterialDesignTextBoxBase utilisées dans la méthode d’extension de l’issue. Déterminez où doit se trouver un style FlowDocumentScrollViewer et vérifiez que l’exemple peut référencer MaterialDesignFlowDocument tout en conservant les couleurs de thème et le style de texte attendus.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp
- Domaine
- design, desktop
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100