我有一个WPF RichTextBox,它是在WPF Web服务中动态构建的.此Web服务接受从第三方Silverlight RichTextBox控件的内容中提取的xaml字符串.
<Paragraph TextAlignment=\"Left\"><Run FontFamily=\"Comic Sans MS\" FontSize=\"16\" Foreground=\"#FF0000FF\" FontWeight=\"Bold\" >This text is blue and bold.</Run></Paragraph>
Run Code Online (Sandbox Code Playgroud)
如何将此xaml插入我的WPF RichTextBox?我有点理解FlowDocument和Paragraph和Run的概念,所以我可以使用下面的代码用文本填充WPF RichTextBox,
FlowDocument flowDocument = new FlowDocument();
Paragraph par = new Paragraph();
par.FontSize = 16;
par.FontWeight = FontWeights.Bold;
par.Inlines.Add(new Run("Paragraph text"));
flowDocument.Blocks.Add(par);
rtb.Document = flowDocument;
Run Code Online (Sandbox Code Playgroud)
但我真的不想自己解析xaml来构建一个段落,因为它会变得非常复杂.有没有办法让控件知道如何解析传入的xaml?
我有一个带有Rectangle触发器的WPF应用程序,定义如下:
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Rectangle.StrokeThickness" Value="1"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Rectangle.StrokeThickness" Value="4"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
和一个矩形:
<Rectangle Fill="Blue" StrokeThickness="2" Stroke="Black" Height="20" Width="50" />
Run Code Online (Sandbox Code Playgroud)
当鼠标结束时,矩形不会改变strokethickness.为什么不?
我可以在代码隐藏中设置stackpanel的边距,如下所示:
StackPanel sp2 = new StackPanel();
sp2.Margin = new System.Windows.Thickness(5);
Run Code Online (Sandbox Code Playgroud)
但是如何单独设置,这两个都不起作用:
伪代码:
sp2.Margin = new System.Windows.Thickness("5 0 0 0");
sp2.Margin.Left = new System.Windows.Thickness(5);
Run Code Online (Sandbox Code Playgroud) 更改标签的文本(或者我们可以说是基于文本的进度条).在winforms中你只是无效/更新.
但是如何在不使用后台线程的情况下在WPF中执行此操作.???
<TextBox Height="?" Width="?" AcceptReturn="true" />
Run Code Online (Sandbox Code Playgroud)
高度=随机; 宽度=随机; 例如,高度为60,宽度为100.如何控制文本的输入长度小于TextBox的大小
c# ×5
wpf ×5
xaml ×2
code-behind ×1
invalidation ×1
margin ×1
richtextbox ×1
silverlight ×1
stackpanel ×1
winforms ×1