【问题标题】:Textblocks aren't added?没有添加文本块?
【发布时间】:2014-01-07 09:23:46
【问题描述】:

我正在尝试动态生成一些 UI 元素。整个事情都有效,除了看起来文本块是不可见的。

Grid pGrid = this.createPodiumGrid();

//create textblocks etc
TextBlock bTijd = new TextBlock();
bTijd.Text = currentGig.BeginTijd;
bTijd.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
bTijd.Foreground = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));
Grid.SetColumn(bTijd, 0);
Grid.SetRow(bTijd, 0);
pGrid.Children.Add(bTijd);

TextBlock pName = new TextBlock();
pName.Text = currentGig.Podium.Naam;
pName.Margin = new Thickness(20, 0, 0, 0);
pName.Foreground = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));
Grid.SetColumn(pName, 1);
Grid.SetRow(pName, 0);
pGrid.Children.Add(pName);

Image favImg = new Image();
favImg.Source = new BitmapImage(new Uri("/Images/thumb.png", UriKind.RelativeOrAbsolute));
favImg.Width = 50;
favImg.Height = 50;
favImg.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
Grid.SetColumn(favImg, 2);
Grid.SetRow(favImg, 0);
pGrid.Children.Add(favImg);

podiumStackPanel.Children.Add(pGrid);

最后一张图片显示在正确的位置。我在这里错过了什么吗?文本颜色为白色背景上的黑色。但是我看不到文字。我 100% 肯定该值已被填充。

【问题讨论】:

  • 当它是 WP8 时,您或许应该删除 WPF 标签。
  • 你是对的。将其替换为 Silverlight。

标签: c# silverlight xaml windows-phone-8 windows-phone


【解决方案1】:

将您的代码更改为以下内容:

bTijd.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));

您已通过添加第一个“0”将颜色设置为透明。

【讨论】:

  • 在其他的 '0' 后面直接输入这种错误是很常见的。
【解决方案2】:
pName.Foreground = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));

Color.FromArgb的第一个参数是alpha通道。也就是不透明度。而您将其设置为 0,这就解释了为什么 TextBlock 是不可见的。只需将其设置为 255:

pName.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));

或者使用 Colors 枚举:

pName.Foreground = new SolidColorBrush(Colors.Black);

【讨论】:

    【解决方案3】:

    您已通过在 Color.FromArgb 中设置零 alpha 值使其前景透明。

    将 Foreground 设置为 Colors.Black,例如

    bTijd.Foreground = new SolidColorBrush(Colors.Black);
    

    当然

    bTijd.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
    

    【讨论】:

    • 不会将 RGB 设置为 255, 0,0,0 工作吗?就像这样 bTijd.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); pName.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
    • @Malcor 是的,这确实有效。这就是我使用的最终解决方案。就像上面建议的 VDesign。
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2018-04-15
    • 2014-02-16
    相关资源
    最近更新 更多