Wpf 将内联转换回WatermarkTextBox
我正在使用WPF工具包进行WatermarkTextBox控件 我的应用程序动态连接文本字符串和占位符,以便用户填充空格Wpf 将内联转换回WatermarkTextBox,wpf,wpftoolkit,Wpf,Wpftoolkit,我正在使用WPF工具包进行WatermarkTextBox控件 我的应用程序动态连接文本字符串和占位符,以便用户填充空格 foreach(var e in elements) { if (isText) { LetterText.Inlines.Add(new Run { Text = e, BaselineAlignment = BaselineAlignment.Center })
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);
}
}
在编译时,如果没有else子句,则“无法将内联转换为WatermarkTextBox”,则会失败,从内联到运行的转换工作正常
如何从水印文本框中获取文本?这就成功了:
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没有为运行元素隐式创建