标签: textblock

在TextBlock(WPF)中显示图像

我正在开发一个简单的聊天应用程序.目前,消息被绑定到这样的自定义样式列表框(简化的XAML):

<ListBox ItemsSource="{Binding MessageCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Text}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

现在我希望能够将图像(如图形表情符号)放入显示的消息文本中.有没有办法使用TextBlock(或任何其他标准组件)来实现这一点,还是我需要使用一些特殊的控件?

提前致谢

wpf chat textblock

13
推荐指数
2
解决办法
2万
查看次数

如何在呈现之前测量WPF中TextBlock的大小?

我有一个带有两个TextBlock控件(堆叠)的WPF DataTemplate,然后是一些其他元素.由于一些复杂的布局代码,我需要知道两个TextBlock元素的高度,以便我可以绘制一些花哨的连接线,并排列其他控件等.

如果我知道进入TextBlocks的文本,我知道字体等,是否有某种方法可以计算或测量这些TextBlocks的高度而不实际呈现它们?

wpf textblock measure

13
推荐指数
1
解决办法
1万
查看次数

将文本块绑定到两个属性

我有一个Textblock绑定到ItemsSource集合中的属性.我想在同一个文本块中显示该类的两个属性,但似乎我一次只能执行一个绑定.我目前有这个:

Text="{Binding Title}"
Run Code Online (Sandbox Code Playgroud)

但我希望我想附加另一个属性,所以从理论上讲它将是:

Text="{Binding Title - Author}" 
Run Code Online (Sandbox Code Playgroud)

输出看起来像"莎士比亚 - 罗密欧与朱丽叶".我已经尝试添加一个逗号,另一个绑定和其他东西,但它们都会导致抛出异常(例如元素TextBlock上的未知属性Text).

这两个属性都来自同一个类,因此我不需要有两个数据源.

c# silverlight xaml binding textblock

12
推荐指数
3
解决办法
1万
查看次数

WPF:如何使空TextBlock不占用空间?

假设我有一个简单的布局,例如:

<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的间隙.是否有一些属性可以防止空文本块占用空间?或者我应该使用其他控制?

谢谢.

wpf layout visibility textblock

11
推荐指数
2
解决办法
5855
查看次数

以编程方式在文本之间创建带有超链接的文本块

在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)

c# wpf textblock hyperlink

11
推荐指数
1
解决办法
2万
查看次数

放置在ViewBox中时,TextBlock文本不会换行

我有一个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 viewbox word-wrap winrt-xaml windows-store-apps

11
推荐指数
1
解决办法
7857
查看次数

如何将Textblock设置为自动调整为TreeView的宽度?

我有一个TextBlock我需要自动调整到宽度的一个TreeView.这些TreeViewTextBlock都包含在一个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)

wpf textblock autosize

10
推荐指数
1
解决办法
9274
查看次数

为什么WPF中的TextBox.Text不可动画?

好吧,我刚刚遇到了让我措手不及的事情.

我正在帮助一位开发人员提出几个不相关的问题,在他的项目中,他正在将文本设置为一些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)

wpf animation text textbox textblock

10
推荐指数
1
解决办法
4944
查看次数

在TextBlock中包装文本

有没有可能为Textblock提供wordwrap建议,就像你可以用HTML做的那样,<SHY> (soft hyphen)或者<WBR> (word break)更复杂,更难维护zero-width-space &#8203;

目前,Textblock在看到必要时会破坏单词,最后会出现像word一样的单词

Stackoverflo
w

我想要的是:

Stackover-
流程

或至少:

Stackover
流程

如果有建议的方法来实现所需,请告诉我.

c# wpf textblock

10
推荐指数
1
解决办法
2886
查看次数

TextBlock中的内联对象,TextTrimming = CharacterEllipsis或WordEllipsis

如果您运行此代码并最小化/最大化窗口的宽度

<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中的错误吗?

wpf textblock texttrimming

10
推荐指数
1
解决办法
1146
查看次数