精华内容
下载资源
问答
  • Add hyperlink to textblock wpf Displaying is rather simple, the navigation is another question. XAML goes like this: <TextBlock Name="TextBlockWithHyperlink"> Some text ...

    Add hyperlink to textblock wpf

     

    Displaying is rather simple, the navigation is another question. XAML goes like this:

    <TextBlock Name="TextBlockWithHyperlink">
        Some text 
        <Hyperlink 
            NavigateUri="http://somesite.com"
            RequestNavigate="Hyperlink_RequestNavigate">
            some site
        </Hyperlink>
        some more text
    </TextBlock>

    And the event handler that launches default browser to navigate to your hyperlink would be:

    private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) {
        System.Diagnostics.Process.Start(e.Uri.ToString());
    }

    Edit: To do it with the text you've got from database you'll have to parse the text somehow. Once you know the textual parts and hyperlinked parts, you can build textblock contents dynamically in the code:

    TextBlockWithHyperlink.Inlines.Clear();
    TextBlockWithHyperlink.Inlines.Add("Some text ");
    Hyperlink hyperLink = new Hyperlink() {
        NavigateUri = new Uri("http://somesite.com")
    };
    hyperLink.Inlines.Add("some site");
    hyperLink.RequestNavigate += Hyperlink_RequestNavigate;
    TextBlockWithHyperlink.Inlines.Add(hyperLink);
    TextBlockWithHyperlink.Inlines.Add(" Some more text");

     

    转载于:https://www.cnblogs.com/chucklu/p/11437655.html

    展开全文
  • Ellipse TextBlock by WPF

    千次阅读 2009-06-26 19:01:00
    这两天用WPF的MultiDataBinding实现了一个能随TextBlock长度变化而自动调整字符串显示形式,中间部分用省略号(...)表示,代码如下。 internal class OutputToEllipsisDisplayConverter : IMultiValueConverter { ...

    这两天用WPF的MultiDataBinding实现了一个能随TextBlock长度变化而自动调整字符串显示形式,中间部分用省略号(...)表示,代码如下。

     

     

     

     

     

    展开全文
  • WPF TextBlock

    2012-08-25 08:44:00
    TextBlock模型实际上指的就是System.Windows.Controls.TextBlock类,它是一个用于显示少量流内容的轻量控件。其中包含一个InLines属性,支持 Inline 流内容元素的承载和显示。 支持的元素包括 AnchoredBlock、Bold...

    TextBlock模型实际上指的就是System.Windows.Controls.TextBlock类,它是一个用于显示少量流内容的轻量控件。其中包含一个InLines属性,支持 Inline 流内容元素的承载和显示。 支持的元素包括 AnchoredBlock、Bold(粗体字符串)、Hyperlink(超链接,在浏览器支持的模式下有效)、InlineUIContainer(承载其他控件的容器)、Italic(斜体字符串)、LineBreak(换行符)、Run(普通字符串)、Span(可以设置字体、颜色等的Span) 和 Underline(下划线)。

    例如:

        <StackPanel Orientation="Horizontal">

            <Border BorderThickness="2" Margin="5" BorderBrush="Black">

                <TextBlock Margin="5" TextWrapping="WrapWithOverflow">

                    <TextBlock.Inlines>

                        <Bold>

                           <Run>BlockText 控件XAML示例</Run>

                        </Bold>

                        <LineBreak/>

                        <Run>TextBlock支持以下的几种流显示样式:</Run>

                       <LineBreak/>

                       <Bold>粗体(Bold)</Bold>

                       <LineBreak/>

                       <Italic>斜体(Italic)</Italic>

                       <LineBreak/>

                      <Underline>下划线(Underline)</Underline>

                       <LineBreak/>

                       <Hyperlink NavigateUri=http://www.microsof.com>

                          超级链接</Hyperlink>

                       <LineBreak/>

                       <Span Foreground="Red" FontSize="18">Span设置字体、颜色等</Span>

                       <LineBreak />

                      <InlineUIContainer>

                           <StackPanel Background="AntiqueWhite" Margin="5">

                               <TextBlock>Inline UI 容器</TextBlock>

                               <Button Content="按钮" Width="80" />

                           </StackPanel>

                       </InlineUIContainer>

                   </TextBlock.Inlines>

               </TextBlock>

           </Border>

           <Border BorderThickness="2" Margin="5" BorderBrush="Black">

              <TextBlock Margin="5" TextWrapping="WrapWithOverflow" x:Name="textBlock">

                   <TextBlock.Inlines>

                       <Bold>

                           <Run x:Name="title"></Run>

                       </Bold>

                       <LineBreak x:Name="line"/>

                       <InlineUIContainer x:Name="container">

                           <StackPanel Background="AntiqueWhite" Margin="5" x:Name="panel">

                           </StackPanel>

                       </InlineUIContainer>

                   </TextBlock.Inlines>

               </TextBlock>

           </Border>

       </StackPanel>

    使用代码操作Inlines:

               TextBlock myTextBlock = new TextBlock();

                myGrid.Children.Add(myTextBlock);

                myTextBlock.Inlines.Add("TextBlock的使用:");

                Italic myItalic = new Italic(new Run("(如Width Hight等)"));

                myItalic.FontSize = 24;

                myItalic.Foreground = Brushes.Purple;

                myTextBlock.Inlines.Add(myItalic);

                myTextBlock.Inlines.Add("是很奇怪的,它不是普通的像素,这个单位被称为与设备无关的单位");

                myTextBlock.TextWrapping = TextWrapping.WrapWithOverflow;

                Bold myBold = new Bold(new Italic(new Run("(Device-independent unit)")));

                myTextBlock.Inlines.Add(myBold);

                myTextBlock.HorizontalAlignment = HorizontalAlignment.Stretch;

                myTextBlock.Inlines.Add(new LineBreak());

                Bold myBold1 = new Bold(new Run("粗体"));

                myTextBlock.Inlines.Add(myBold1);

                myTextBlock.Inlines.Add(new LineBreak());

                Underline myUnderline = new Underline(new Run("下划线"));

                myTextBlock.Inlines.Add(myUnderline);

                myTextBlock.Inlines.Add(new LineBreak());

                Hyperlink myHyperlink=new Hyperlink(new Run("百度"));

                myHyperlink.NavigateUri = new Uri("http://www.baidu.com");

                myTextBlock.Inlines.Add(myHyperlink);

                myTextBlock.Inlines.Add(new LineBreak());

                Span mySpan = new Span(new Run("Span设置字体、颜色等"));

                mySpan.Foreground = Brushes.Red;//或者改为:mySpan.Foreground=new SolidColorBrush(Colors.Red);

                myTextBlock.Inlines.Add(mySpan);

                myTextBlock.Inlines.Add(new LineBreak());

                InlineUIContainer myInlineUIContainer = new InlineUIContainer();

                 myTextBlock.Inlines.Add(myInlineUIContainer);

                StackPanel myStackPanel=new StackPanel();

                myInlineUIContainer.Child = myStackPanel;

                Button myButton = new Button();

                myButton.Content = "lucky";

                myStackPanel.Children.Add(myButton);

     

     转自:http://blog.csdn.net/zhangjiyehandsom/article/details/5498845

    转载于:https://www.cnblogs.com/dongxizhen/archive/2012/08/25/TextBlock.html

    展开全文
  • WPF学习之TextBlock

    2015-12-14 22:15:35
    TextBlock属性
  • WPF TextBlock 绑定 换行

    2017-11-12 21:04:00
    需要在textblock中换行 其实textblock换行有很多写法,比如: Xaml: <TextBlock Text="AAAAA&#13;BBBBB" /> <TextBlock Text="AAAAA&#10;BBBBB" /> <TextBlock >AAAAA<Li...

    最近有个小需求

    需要在textblock中换行

     

    其实textblock换行有很多写法,比如:

    Xaml:

    <TextBlock Text="AAAAA&#13;BBBBB" />
    <TextBlock Text="AAAAA&#10;BBBBB" />
    <TextBlock >AAAAA<LineBreak />BBBBB</TextBlock>

     

    CodeBehind:

    this.TextBlock1.Text = "AAAAAAA\nBBBBBBBB";

     

    绑定的时候其实也很简单,只要用\n就可以了

     

    但是有时候情况比较特殊,比如我们这个程序同时还将字符绑定给了一个 MediaElement ,这个时候用\n,则会提示“路径非法字符”…

    image

     

     

    这下杯具了

    想到的简单的方法是处理数据源成一个List<T>,不过在已经乱成一锅粥的代码里貌似改动影响有点大…

    在不改动数据源的情况下,只能从TextBlock上想办法了

    然后就想到了 附加属性http://msdn.microsoft.com/zh-cn/library/ms749011(v=vs.110).aspx

    利用附加属性和转换器,来将TextBlock拆成<Run />和<LineBreak />

     

    首先先新建一个转换器,将数据字符串根据分隔符(我设置的分隔符为{n})来拆分成<Run />和<LineBreak />,返回List<Inline>

        public class TextBlockLineBreakConvertor : IValueConverter
        {
            public object Convert(object value, Type targetType,object parameter, CultureInfo culture)
            {
                var inlines = new List<Inline>();
                if (value != null)
                {
                    var textblocklines =value.ToString().Split(new string[] { "{n}" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string line in textblocklines)
                    {
                        inlines.Add(new Run() { Text = line });
                        if (textblocklines.ToList().IndexOf(line) < textblocklines.Length - 1)
                        {
                            //加入换行
                            inlines.Add(new LineBreak());
                        }
                    }
                }
                return inlines;
            }
    
            public object ConvertBack(object value, Type targetType,object parameter, CultureInfo culture)
            {
                return value;
            }
        }

     

    然后我们新建一个附加属性 InlineList

            public static readonly DependencyProperty TextBlockLineBreakProperty =
                DependencyProperty.RegisterAttached(
                    "InlineList",
                    typeof(List<Inline>),
                    typeof(MainWindow),
                    new PropertyMetadata(null, OnLineBreakPropertyChanged));

     

    附加属性来将转换器转换成的 List<Inline> 赋值给界面元素

            private static void OnLineBreakPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
            {
                var tb = obj as TextBlock;
                if (tb != null)
                {
                    tb.Inlines.Clear();
                    var inlines = e.NewValue as List<Inline>;
                    if (inlines != null)
                    {
                        inlines.ForEach(inl => tb.Inlines.Add((inl)));
                    }
                }
            }

     

    然后给 TextBlock 添加上我们建立的附加属性

            public static string GetInlineList(TextBlock element)
            {
                if (element != null)
                {
                    return element.GetValue(TextBlockLineBreakProperty) as string;
                }
                else
                {
                    return string.Empty;
                }   
            }
            public static void SetInlineList(TextBlock element, string value)
            {
                if (element != null)
                {
                    element.SetValue(TextBlockLineBreakProperty, value);
                }
            }
     
    最后我们来修改下页面上的数据绑定
    <TextBlock local:MainWindow.InlineList="{Binding Str,Converter={StaticResource lineBreakConverter}}"  TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
     
    最后添加绑定数据
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                List<StringData> l1 = new List<StringData>();
                l1.Add(new StringData() { Str = "AAAAA&#13;{n}BBBBB" });
                l1.Add(new StringData() { Str = "AAAAA&#13;{n}BBBBB" });
                l1.Add(new StringData() { Str = "AAAAA&#13;{n}BBBBB" });
                l1.Add(new StringData() { Str = "AAAAA&#13;{n}BBBBB" });
                ItemsControl1.ItemsSource = l1;
            }
     
    最后看看换行效果
     

     

    源码下载:

    本文转自 sun8134 博客园博客,原文链接: http://www.cnblogs.com/sun8134/p/4191882.html  ,如需转载请自行联系原作者




    展开全文
  • WPF_TextBlock实例

    2011-11-16 08:37:30
    WPF_TextBlock实例 这是一整套的实例,供新手挑选使用
  • WPFtextBlock 变色功能

    2019-03-12 13:13:00
    WPFtextBlock 变色功能 原文:WPFtextBlock 变色功能 <Window.Resources> <Storyboard x:Key="OnLoaded" RepeatBehavior="Forever" AutoReverse="True" > ...
  • WPFTextBlock控件

    2020-04-02 11:37:24
    WPFTextBlock控件 XMAL代码如下: <Window x:Class="MyControl.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/...
  • WPFTextblock 变色功能

    2019-07-07 09:26:37
    WPFTextblock 变色功能 开发工具与关键技术:Visual Studio 2015、WPF 撰写时间: 2019年7月3日 WPF TextBlock再是开发程序中是很有用的,它可以支持设置部分文本的样式。我们在实际使用中还需要注意一些细节以...
  • 原文:WPF TextBlock IsTextTrimmed 判断文本是否超出 WPF TextBlock 设置TextTrimming情况下 判断 isTextTrimmed(Text 文本是否超出 是否出现了省略号)  private bool IsTextTrimmed(TextBlock textBlock) { ....
  • WPF实现滚动显示的TextBlock 原文:WPF实现滚动显示的TextBlock 在我们使用TextBlock进行数据显示时,经常会遇到这样一种情况就是TextBlock的文字内容太多,如果全部显示的话会占据大量的界面,这是...
  • wpf中经常会遇到TextBlock里的文本过长,需要换行,如果只有TextBlock的话,只需要将TextBlock的TextWrapping设置为Wrap <TextBlock TextWrapping="Wrap" Text="换行测试换行测试换行测试换行测试换行测试换行...
  • 一、水平居中 设置TextBlock 内容水平居中 步骤1:TextAlignment="Center" 步骤2:Padding="0,28,0,0
  • wpf textblock 长文本滚动

    万次阅读 2015-04-07 09:48:25
    textblock添加滚动条 <TextBlock x:Name="xt" Grid.Row="0" Margin="10,10,10,10" TextWrapping="Wrap" Text="" /> </ScrollViewer> 用一个Scrol
  • <TextBlock TextWrapping="Wrap" ></TextBlock>```
  • WPF TextBlock的数据绑定

    2020-11-20 13:46:32
    TextBlock Text="{Binding PrintTimes}" Height="auto" Width="500" HorizontalAlignment="Center" /> 现在,想绑定另一个属性名 是否可以将两个或多个值同时绑定? 可以用如下代码实现 <TextBlock> ...
  • WPF TextBlock 实现点击事件

    千次阅读 2020-03-25 10:02:08
    TextBlock 标签里定义MouseLeftButtonDown 事件 xaml.cs :
  • 效果: 需要Label/textblock的文字大小随resize改变,则使用Viewbox <Viewbox Stretch="Uniform"> <TextBlock Name="myTextBlock" Text=...How to set textblock or label with resizable font size in WPF?
  • WPF TextBlock的使用

    万次阅读 2011-05-23 12:07:00
    比如: <TextBlock Name="txtBlockOutpuMessage" Text="hello" /> TextBlock默认是不自动换行的,如果想TextBlock换行,可以设定属性TextWrapping="Wrap"。   TextBlock其实可以添加很多子...
  • WPF控件TextBlock中文字自动换行 原文:WPF控件TextBlock中文字自动换行 在很多的WPF项目中,往往为了追求界面的美观,需要控制控件中文字的换行显示,现对TextBlock控件换行的实现方式进行...
  • WPF textblock验证问题

    2017-06-19 18:32:29
    WPF 验证

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,152
精华内容 460
关键字:

textblockwpf