如果将TextWrapping设置为"Wrap",则WPF TextBlock可以包含多行文本.是否有"干净"的方式来获取文本行数?我考虑查看所需的高度并将其除以每条线的估计高度.但是,这看起来很脏.有没有更好的办法?
我在同一位置有一个TextBlock和一个文本框.根据用户所处的模式,我使一个可见,另一个折叠.这工作正常,但我怎样才能使Textblock可滚动?我想我应该使用ScrollViewer,但我不知道它为什么不起作用.我已经尝试过使用高度(自动和固定),但它不会滚动.我的xaml是这样的:
<ScrollViewer x:Name="detailsScroller" Height="285" Width="480" Canvas.Top="76" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Canvas x:Name="infoCanvas" Width="478" >
<TextBlock x:Name="textblockInfo" TextWrapping="Wrap" Width="462" Height="197" Canvas.Left="8"/>
<TextBox x:Name="textboxInfo" TextWrapping="Wrap" Width="478" AcceptsReturn="True" Height="300" Visibility="Collapsed" />
</Canvas>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图找出创建样式/触发器以将前景设置为红色的最佳方法,当值<0时,最好的方法是什么?我假设DataTrigger,但我如何检查负值,我是否必须创建自己的IValueConverter?
我正在使用WPF网格作为窗口的布局.它有两列和任意数量的行.第一列专门用于标签,第二列用于用户输入字段(例如TextBox,ComboBox等).我的要求是:
我试过下面的XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="50" MaxWidth="180" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="First Name" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Column="1" Text="{Binding FirstName}" />
<TextBlock Grid.Row="1" Text="Family Name" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding FamilyName}" />
<TextBlock Grid.Row="2" Text="Label That Won't Fit in 180 units" TextTrimming="CharacterEllipsis" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Text}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
我希望第三行标签"不符合180个单位的标签"将被截断为"标签赢得......"之类的东西.相反,它被剪切到"标签不会",一半的"t"丢失.
我尝试了一种在网络上找到的不同方法.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LabelColumn" Width="Auto" MinWidth="50" MaxWidth="180" />
<ColumnDefinition Width="*" /> …
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)
这样做的正确方法是什么?再次感谢您的帮助!
我正在处理我的第一个WPF应用程序,我注意到我无法编辑任何文本块中的文本值.
我似乎在这里找不到任何会阻止我改变它的错误......
<Label Content="Line Terminator" Grid.Row="0" Grid.Column="0" Margin="5"></Label>
<Border BorderThickness="1" BorderBrush="LightBlue" Grid.Row="0" Grid.Column="1" Margin="5">
<TextBlock x:Name="txtLineTerm" Focusable="True" IsManipulationEnabled="True" Padding="3"></TextBlock>
</Border>
<Label Content="Field Terminator" Grid.Row="0" Grid.Column="2" Margin="5"></Label>
<Border BorderThickness="1" BorderBrush="LightBlue" Grid.Row="0" Grid.Column="3" Margin="5">
<TextBlock x:Name="txtFieldTerm" Focusable="True" IsManipulationEnabled="True" Padding="3"></TextBlock>
</Border>
Run Code Online (Sandbox Code Playgroud)
有谁能看到这个问题?我觉得这里有一个我缺少的概念.任何解释将不胜感激.
我有一个TextBlock
,包含在a中ScrollViewer
,并且使用Task的结果设置了Text
属性TextBlock
.TextBlock
不会调整任务返回的文本大小的滚动条.
有任何想法吗?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="500"/>
</Grid.ColumnDefinitions>
<ScrollViewer VerticalScrollBarVisibility="Auto"
Height="177"
Width="500"
HorizontalScrollBarVisibility="Disabled">
<TextBlock Height="177"
Text="Extracted Xml"
Width="504"
HorizontalAlignment="Stretch"
TextWrapping="Wrap" />
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud) 有没有办法检测文本块中的换行符数TextWrapping="Wrap"
?
我正在考虑使用非等宽字体.我需要这个,因为我正在创建一个新的,个性化的MessageBox窗口,它有一个大文本标题,动画,我的应用程序的徽标和我的应用程序的主题.
很明显,我需要根据正文消息的LineBreak数量来改变窗口的大小 - 类似于默认MessageBox窗口的行为方式.
所以我有以下几点:
<TextBlock.Text>
<MultiBinding StringFormat="So and so will donate {0:C0}
to {1}, bringing the
total amount to {2:C0}.">
<Binding Path="VisitorTotal" />
<Binding Path="EventName" />
<Binding Path="EventTotal" />
</MultiBinding>
</TextBlock.Text>
Run Code Online (Sandbox Code Playgroud)
我试过

,
,\n
,\\n
,及其各种组合.什么都不会给我换行.这是怎么回事?
我正试图将两个<Run>
s 绑定在一个内部TextBlock
,如下面的代码片段所示.但我得到了一个XamlParseException
.
基本上我正在尝试实现这种格式:
CodeNum: LongDescription
如果下面的代码注定要失败,我还有其他选择吗?
<TextBlock>
<Run FontWeight="Bold" Text="{Binding CodeNum}"/>
<Run FontWeight="Bold" Text=": "/>
<Run Text="{Binding LongDescription}"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud) textblock ×10
wpf ×9
xaml ×6
c# ×3
.net ×1
asynchronous ×1
binding ×1
data-binding ×1
datatrigger ×1
grid ×1
multibinding ×1
scrollviewer ×1
silverlight ×1
styles ×1
triggers ×1
word-wrap ×1
wpf-controls ×1