我正在使用WPF工具包进行WatermarkTextBox
控件。
我的应用程序动态连接文本字符串和占位符,以便用户填写空白。
foreach(var e in elements)
{
if (isText)
{
LetterText.Inlines.Add(new Run
{
Text = e,
BaselineAlignment = BaselineAlignment.Center
});
}
else
{
LetterText.Inlines.Add(new WatermarkTextBox
{
Watermark = e
});
}
isText = !isText;
}
这很有效,但是当我想重新组合文本时出现问题:
foreach(var inline in LetterText.Inlines)
{
if (inline.GetType() == typeof(Run))
{
sb.Append(((Run)inline).Text);
}
else if (inline.GetType() == typeof(WatermarkTextBox))
{
var wtb = inline as WatermarkTextBox;
sb.Append(wtb.Text);
}
}
这在编译时失败,并且无法将内联转换为WatermarkTextBox' (没有else子句,从Inline
到Run
的转换工作正常。)
如何从WatermarkTextBox
获取文字?
答案 0 :(得分:0)
这就是诀窍:
if (inline.GetType() == typeof(Run))
{
sb.Append(((Run)inline).Text);
}
else if (inline.GetType() == typeof(InlineUIContainer))
{
var container = inline as InlineUIContainer;
var wtb = container.Child as WatermarkTextBox;
if (wtb !=null)
sb.Append(wtb.Text);
}
我不知道为什么InlineUIContainer
也不会为Run
元素隐式创建