我正在开发一个简单的聊天应用程序.目前,消息被绑定到这样的自定义样式列表框(简化的XAML):
<ListBox ItemsSource="{Binding MessageCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
现在我希望能够将图像(如图形表情符号)放入显示的消息文本中.有没有办法使用TextBlock(或任何其他标准组件)来实现这一点,还是我需要使用一些特殊的控件?
提前致谢
我有一个带有两个TextBlock控件(堆叠)的WPF DataTemplate,然后是一些其他元素.由于一些复杂的布局代码,我需要知道两个TextBlock元素的高度,以便我可以绘制一些花哨的连接线,并排列其他控件等.
如果我知道进入TextBlocks的文本,我知道字体等,是否有某种方法可以计算或测量这些TextBlocks的高度而不实际呈现它们?
我有一个Textblock绑定到ItemsSource集合中的属性.我想在同一个文本块中显示该类的两个属性,但似乎我一次只能执行一个绑定.我目前有这个:
Text="{Binding Title}"
Run Code Online (Sandbox Code Playgroud)
但我希望我想附加另一个属性,所以从理论上讲它将是:
Text="{Binding Title - Author}"
Run Code Online (Sandbox Code Playgroud)
输出看起来像"莎士比亚 - 罗密欧与朱丽叶".我已经尝试添加一个逗号,另一个绑定和其他东西,但它们都会导致抛出异常(例如元素TextBlock上的未知属性Text).
这两个属性都来自同一个类,因此我不需要有两个数据源.
假设我有一个简单的布局,例如:
<StackPanel>
<TextBlock Text="{Binding Path=Title}" />
<TextBlock Text="{Binding Path=ShortDescription}" />
<TextBlock Text="{Binding Path=LongDescription}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
现在,当我将ShortDescription设置为null或清空字符串时,仍然存在第二个TextBlock的间隙.是否有一些属性可以防止空文本块占用空间?或者我应该使用其他控制?
谢谢.
在XAML中,我有以下代码:
<Label Width="120" Height="20" Name="label1" SnapsToDevicePixels="True" HorizontalAlignment="Left" VerticalAlignment="Bottom">
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left">
click
<Hyperlink RequestNavigate="Hyperlink_RequestNavigate" NavigateUri="foo">here</Hyperlink>
please
</TextBlock>
</Label>
Run Code Online (Sandbox Code Playgroud)
现在我想摆脱整个TextBlock XAML并以编程方式添加该位.我没有创建TextBlock,将Text属性设置为'click please'并添加超链接TextBlock.Content
.但是如何在"点击"和"请"之间定位超链接?如何将超链接的文本设置为"here"?
我没有太多的进展,到目前为止,我得到的是:
label2.Content = new TextBlock() { Text = "click please" };
//(label2.Content as TextBlock).Content does not exist?
//and even if it does.. how do I squeeze the hyperlink in between the text?
Run Code Online (Sandbox Code Playgroud) 我有一个TextBlock,其中包含一长串文本,我想要包装.我已经将TextBlock放在ViewBox中,期望文本大小在仍然换行时改变,但是这似乎不会发生.ViewBox只调整TextBox的大小,以便所有文本都适合一行,使文本非常小.
如何在仍使用TextWrapping的同时使用ViewBox调整文本大小.
这是我的代码:
<Viewbox>
<TextBlock Text="The Option text can also dynamically grow/shrink to fit more content. More text to go here....................." TextWrapping="Wrap"/>
</Viewbox>
Run Code Online (Sandbox Code Playgroud)
这是Windows 8商店应用程序的一部分,因此是WinRT Xaml.
我有一个TextBlock
我需要自动调整到宽度的一个TreeView
.这些TreeView
和TextBlock
都包含在一个StackPanel
.在StackPanel
里面Expander
.宽度TreeView
应该驱动其他对象的宽度,我需要TextBlock
更改的高度来显示全文.我所有的努力都导致了TextBlock
驱动宽度.谢谢!
<Expander IsEnabled="True" HorizontalAlignment="Right" Margin="0,8,8,53" x:Name="ExpanderBookMarks" Width="Auto" Foreground="#FF625B5B" ExpandDirection="Down" IsExpanded="True" Header="Bookmarks" Visibility="Hidden">
<StackPanel Name ="StackPanelBookmark" Orientation="Vertical" Width="{wpf:Binding Path=Width, ElementName=trvBookmarks, Mode=Default}">
<TreeView x:Name="trvBookmarks" ItemsSource="{Binding}"
ItemTemplateSelector="{StaticResource BookmarkTemplateSelector}"
Margin="0,0,0,0"
TreeViewItem.Selected="HandleTreeViewItemClick" AllowDrop="True"/>
<TextBlock x:Name="TextBlockBookmarkDiscription" TextWrapping="Wrap" Foreground="AntiqueWhite" Background="Transparent" Width="150">
This is the discription area and needs to be very long because the end user can put 400 charectors in.
</TextBlock>
</StackPanel>
<!--End of Dougs Treeview--> …
Run Code Online (Sandbox Code Playgroud) 好吧,我刚刚遇到了让我措手不及的事情.
我正在帮助一位开发人员提出几个不相关的问题,在他的项目中,他正在将文本设置为一些TextBlock(s).所以,我回到我的办公桌并重新创建项目(为了回答他的问题),但我不小心使用了TextBox而不是TextBlock.我的文字根本没有动画!(很多帮助,我是!)
最后,我发现他的xaml正在使用TextBlock而我的正在使用TextBox.有趣的是,当我使用TextBox时,Blend没有创建关键帧.因此,我使用TextBlock在Blend中工作,然后手动修改xaml,将TextBlock转换为TextBox(es).当我运行该项目时,我收到以下错误:
InvalidOperationException: '(0)' Storyboard.TargetProperty path contains nonanimatable property 'Text'.
好吧,似乎Blend足够聪明,知道......并且没有在动画中生成关键帧(它只是直接修改TextBox上的值).混合+1.
所以,问题变成了:为什么TextBox.Text不是可动画的?通常的答案是您动画的特定属性不是DependencyProperty.但是,情况并非如此,TextBox.Text 是 DependencyProperty.
所以,现在我很困惑!你为什么不能动画TextBox.Text?
让我包括一些xaml来说明问题.以下xaml工作...但使用TextBlock.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="TextBoxTextQuestion.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640"
Height="480"
>
<Window.Resources>
<Storyboard x:Key="animateTextStoryboard">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="textControl">
<DiscreteStringKeyFrame KeyTime="0:0:1" Value="Goodbye"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource animateTextStoryboard}"/>
</EventTrigger>
</Window.Triggers>
<Grid x:Name="LayoutRoot">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock x:Name="textControl" Text="Hello" FontFamily="Calibri" FontSize="32"/>
<TextBlock Text="World!" Margin="0,25,0,0" FontFamily="Calibri" FontSize="32"/>
</StackPanel>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
以下xaml 不起作用并使用TextBox.Text:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="TextBoxTextQuestion.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" …
Run Code Online (Sandbox Code Playgroud) 有没有可能为Textblock提供wordwrap建议,就像你可以用HTML做的那样,<SHY> (soft hyphen)
或者<WBR> (word break)
更复杂,更难维护zero-width-space ​
目前,Textblock在看到必要时会破坏单词,最后会出现像word一样的单词
Stackoverflo
w
我想要的是:
Stackover-
流程
或至少:
Stackover
流程
如果有建议的方法来实现所需,请告诉我.
如果您运行此代码并最小化/最大化窗口的宽度
<TextBlock TextTrimming="WordEllipsis" >
<Run Text="I want that this rectangle will be placed "/>
<Rectangle Fill="Black" Width="20" Height="10" />
<Run Text=" here when I minimize width of the window"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
你会看到Rectange会转移到左侧.
是WPF中的错误吗?
textblock ×10
wpf ×8
c# ×3
animation ×1
autosize ×1
binding ×1
chat ×1
hyperlink ×1
layout ×1
measure ×1
silverlight ×1
text ×1
textbox ×1
texttrimming ×1
viewbox ×1
visibility ×1
winrt-xaml ×1
word-wrap ×1
xaml ×1