我有一些文本有"\ r \n"换行标记.我想在WPF文本块中添加换行符.我试过用" "替换"\ r \n" (没有空格),当我在XAML中设置Text属性时起作用,但在从C#代码隐藏设置时似乎不起作用.
那么......将"\ r \n"转换为WPF文本块中的换行符的标准方法是什么?
在TextBlock上设置默认样式会导致Label和其他控件中的样式也被设置.只有将样式放在Application资源中才会发生这种情况,当我将样式放在Window资源中时,一切都很好.
我还发现VS 2008 Designer和XamlPadX会像您期望的那样显示Label,但只有在现实生活中执行应用程序时才会出现问题.
<Application x:Class="WpfApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<ResourceDictionary>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="8"/>
</Style>
<Style x:Key="Title" TargetType="Label">
<Setter Property="FontSize" Value="32"/>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
<Window x:Class="WpfApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300"
Title="Window1"
Width="300">
<StackPanel>
<TextBlock Text="TextBlock No Style" Style="{x:Null}"/>
<Label Content="Label No Style" Style="{x:Null}"/>
<TextBlock Text="Default TextBlock"/>
<Label Content="Default Label" Style="{StaticResource Title}"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
上面的代码显示:
TextBlock No Style - Default font size (As you would expect)
Label No Style - Size 5 font size (How did this happen?)
Default …
Run Code Online (Sandbox Code Playgroud) 我想知道如何将文本块绑定到我的C#类中的变量.
基本上我的.cs文件中有一个"cart"变量.在那个Cart类中,我可以访问不同的总数.
以下是我对绑定的看法,但它似乎没有绑定到变量......
<StackPanel
Width="Auto"
Height="Auto"
Grid.ColumnSpan="2"
Grid.Row="5"
HorizontalAlignment="Right">
<TextBlock
Name="Subtotal"
FontFamily="Resources/#Charlemagne Std"
FontSize="20"
Text="{Binding ElementName=cart, Path=SubTotal}">
</TextBlock>
<TextBlock
Name="Tax"
FontFamily="Resources/#Charlemagne Std"
FontSize="20"
Text="{Binding ElementName=cart, Path=Tax}">
</TextBlock>
<TextBlock
Name="Total"
FontFamily="Resources/#Charlemagne Std"
FontSize="20"
Text="{Binding ElementName=cart, Path=Total}">
</TextBlock>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?再次感谢您的帮助!
我的布局有一个3列网格,每个网格的宽度都设置为Width="*"
.对于中间(第二)网格,我有另外3列网格,每个网格包含它自己的文本块,并且列网格宽度再次设置为Width="*"
.
调整窗口大小时,网格会按预期调整大小,但如果文本超出网格边界,则第3个文本块不会被修剪.我有文本框设置TextTrimming="WordEllipsis"
和TextWrapping="Wrap"
,并且由于某种原因没有强制执行属性.
这是我的一些代码:
布局网格:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="150" MaxWidth="300" Width="1*" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition MinWidth="150" MaxWidth="500" Width="1*" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
第二列代码:
<Grid Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="5" Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=FeedItems.Count}" Foreground="White" FontSize="18" Width="Auto" FontWeight="SemiBold" />
<TextBlock Text=" items from " Foreground="White" FontSize="18" Width="Auto" Grid.Column="1" />
<TextBlock Text="{Binding Path=Name}" Foreground="White" FontSize="18" Grid.Column="2" TextTrimming="CharacterEllipsis" HorizontalAlignment="Left" Width="Auto" TextWrapping="NoWrap" ClipToBounds="True" /> …
Run Code Online (Sandbox Code Playgroud) 我有一个包含HTML标签的数据源(B,I,A),需要在Silverlight ListBox中显示.
搜索它似乎是一个问题,但大多数帖子都很旧,似乎与Silverlight 1有关.
目前使用Silverlight显示简单HTML的最佳方法是什么,如果没有别的,只有B,I和A标签用于粗体,斜体和超链接?
我有一个TextBlock
在Grid
其Padding
属性设置为5,有时候最后一个字符被切断,这取决于字符串Text
属性设置为.
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SomeClass">
<ScrollViewer Padding="5" VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label
Grid.Row="0" Grid.Column="0"
Content="SomeLabel"
HorizontalAlignment="Right"
HorizontalContentAlignment="Right"
VerticalAlignment="Center" />
<TextBlock
Grid.Row="0" Grid.Column="1"
HorizontalAlignment="Left"
Padding="5"
Text="0x0F"
TextWrapping="Wrap"
VerticalAlignment="Top" />
</Grid>
</ScrollViewer>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
当Text
设置为0x0F
与F
不可见.当它设置为0xAB
字符串显示就好了.设置Padding
为0也使字符串显示正常.
我知道TextBlock
可以提出一个FlowDocument
,例如:
<TextBlock Name="txtFont">
<Run Foreground="Maroon" FontFamily="Courier New" FontSize="24">Courier New 24</Run>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
我想知道如何将FlowDocument
存储在变量中的一个设置为a TextBlock
.我正在寻找类似的东西:
string text = "<Run Foreground="Maroon" FontFamily="Courier New" FontSize="24">Courier New 24</Run>"
txtFont.Text = text;
Run Code Online (Sandbox Code Playgroud)
但是,上面代码的结果是XAML文本显示为未解析.
编辑:我想我的问题不够明确.我真正想要达到的目的是:
FlowDocument
从RichTextBox保存用户输入,并将其序列化到磁盘.FlowDocument
从磁盘到可变反序列化文本.TextBlock
.因此,据我所知,创建一个新的Run对象并手动设置参数将无法解决我的问题.
问题是序列化RichTextBox会创建Section对象,我无法将其添加到TextBlock.Inlines.因此,无法将反序列化的对象设置为TextBlock的TextProperty.
我是WPF的新手,不知道这个问题是不是很奇怪.我想知道是否可以在textBlock中的文本周围添加边框.
编辑:
根据建议,我尝试了两种方法,但没有取得多大成功:
<Border BorderBrush="#FF0B232F" BorderThickness="2">
<TextBlock HorizontalAlignment="Left" Text="TextBlock" TextWrapping="Wrap" FontSize="36" FontWeight="Bold" Foreground="#FF88BCCD" OpacityMask="Black"/>
</Border>
Run Code Online (Sandbox Code Playgroud)
和
<Label BorderBrush="#FF0B232F" BorderThickness="2,2,2,2" Content="TextBlock" FontSize="36" FontWeight="Bold" Foreground="#FF88BCCD" />
Run Code Online (Sandbox Code Playgroud)
我在这里做错了吗?
是否可以为TextBlock添加动态颜色..我有一个颜色的一个字符和另一个颜色的下一个字符.
<TextBlock Text="{Binding no}" TextWrapping="Wrap" Margin="10,0,0,0" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="40" Foreground="#A400C4FF" >
// Can we add something here to specify what colours for what chars
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
基本上我从no输入动态4字符序列.我将它绑定到ListBox中的TextBlock.是否可以使用不同颜色的字符.
如果是这样,可以动态添加这些颜色,例如.如果我点击按钮,某些字符会改变颜色?
谢谢.任何帮助表示赞赏.
我想在XAML中使用font awesome(http://fortawesome.github.io/Font-Awesome/design.html).
我已经能够通过直接XAML轻松地使它工作,通过创建一个字体文件夹并在那里添加字体,然后在XAML中:
<TextBlock FontFamily="Fonts/#FontAwesome"></TextBlock>
Run Code Online (Sandbox Code Playgroud)
显示马提尼玻璃图标.
但是,当以编程方式添加它时,它只显示和无效的符号,如下所示:[]
,我尝试了以下内容:
XAML:
<TextBlock Name="textBlock"></TextBlock>
Run Code Online (Sandbox Code Playgroud)
C#:
textBlock.FontFamily = new FontFamily("Fonts/#FontAwesome");
textBlock.Text = HttpUtility.HtmlDecode("");
Run Code Online (Sandbox Code Playgroud)
以及返回文字字符串的以下内容:
textBlock.FontFamily = new FontFamily("Fonts/#FontAwesome");
textBlock.Text = "";
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
textblock ×10
wpf ×7
xaml ×3
c# ×2
.net ×1
data-binding ×1
default ×1
flowdocument ×1
font-size ×1
grid ×1
gridview ×1
html ×1
newline ×1
padding ×1
silverlight ×1
styles ×1
texttrimming ×1