【问题标题】:Silverlight 2 TextBlock ignores MaxWidthSilverlight 2 TextBlock 忽略 MaxWidth
【发布时间】:2010-07-26 19:33:37
【问题描述】:

我正在使用 Silverlight 2 将 TextBlock 动态添加到 Canvas。我设置了 TextBlock 的 MaxWidth,但它忽略了这个值并显示一个比 MaxWidth 值长的字符串。

TextBlock label=new TextBlock();
label.SetValue(Canvas.LeftProperty,Convert.ToDouble(x+3));
label.SetValue(Canvas.TopProperty, Convert.ToDouble(y + 1));
label.Width = DisplayWidth - 6;
label.Height = DisplayHeight - 2;
label.TextWrapping = TextWrapping.NoWrap;
label.MaxWidth = DisplayWidth-6;
label.MinWidth = DisplayWidth-6;
label.Text = this.Title;
label.Margin = new Thickness(3.0);
baseCanvas.Children.Add(label);

我必须做些什么才能让 TextBlock 将其宽度限制为特定值?理想情况下,我也会添加条件省略号(即...)。

【问题讨论】:

    标签: silverlight width textblock


    【解决方案1】:

    TextBlockCanvas 的直接子代时,TextBlock 上的MaxWidth 似乎无效。我不能完全理解为什么会这样。但是解决方案是将TextBlock 放在Border:-

    TextBlock label=new TextBlock(); 
    label.SetValue(Canvas.LeftProperty,Convert.ToDouble(x+3)); 
    label.SetValue(Canvas.TopProperty, Convert.ToDouble(y + 1)); 
    label.Width = DisplayWidth - 6; 
    label.Height = DisplayHeight - 2; 
    label.TextWrapping = TextWrapping.NoWrap; 
    label.MaxWidth = DisplayWidth-6; 
    label.MinWidth = DisplayWidth-6; 
    label.Text = this.Title; 
    label.Margin = new Thickness(3.0); 
    Border border = new Border();
    border.Child = label;
    baseCanvas.Children.Add(border); 
    

    Border 将遵循 TextBlockMaxWidth,但由于没有给定厚度,因此边框本身是不可见的。

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2010-12-16
      • 1970-01-01
      • 2015-11-25
      相关资源
      最近更新 更多