dsc*_*üsä 2 c# rtf windows-runtime windows-store-apps uwp
搜索了很长时间将一些RTF文本绑定到Windows应用商店应用程序上的RichEditBox控件.即使它应该在TwoMay绑定模式下运行....
dsc*_*üsä 10
...最后我找到了以下解决方案.我使用DependencyProperty RtfText从原始RichEditBox控件创建了一个继承控件.
public class RichEditBoxExtended : RichEditBox
{
public static readonly DependencyProperty RtfTextProperty =
DependencyProperty.Register(
"RtfText", typeof (string), typeof (RichEditBoxExtended),
new PropertyMetadata(default(string), RtfTextPropertyChanged));
private bool _lockChangeExecution;
public RichEditBoxExtended()
{
TextChanged += RichEditBoxExtended_TextChanged;
}
public string RtfText
{
get { return (string) GetValue(RtfTextProperty); }
set { SetValue(RtfTextProperty, value); }
}
private void RichEditBoxExtended_TextChanged(object sender, RoutedEventArgs e)
{
if (!_lockChangeExecution)
{
_lockChangeExecution = true;
string text;
Document.GetText(TextGetOptions.None, out text);
if (string.IsNullOrWhiteSpace(text))
{
RtfText = "";
}
else
{
Document.GetText(TextGetOptions.FormatRtf, out text);
RtfText = text;
}
_lockChangeExecution = false;
}
}
private static void RtfTextPropertyChanged(DependencyObject dependencyObject,
DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
var rtb = dependencyObject as RichEditBoxExtended;
if (rtb == null) return;
if (!rtb._lockChangeExecution)
{
rtb._lockChangeExecution = true;
rtb.Document.SetText(TextSetOptions.FormatRtf, rtb.RtfText);
rtb._lockChangeExecution = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案对我有用 - 也许也适用于其他人.:-)
已知问题: VirtualizingStackPanel.VirtualizationMode中的奇怪行为="回收"
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |