【发布时间】:2013-01-08 01:27:41
【问题描述】:
我一直很感兴趣地关注Silverlight text editor sample。它为我提供了很多功能,例如格式化、剪贴板支持、打印等。
该示例还允许使用 InlineUiContainer 插入 DataGrid。
我的问题是插入的 DataGrid 被禁用,而我的要求是用户可以编辑 DataGrid 的内容。
如何使插入到 RichTextBox 中的 InlineUiContainer 启用?
【问题讨论】:
我一直很感兴趣地关注Silverlight text editor sample。它为我提供了很多功能,例如格式化、剪贴板支持、打印等。
该示例还允许使用 InlineUiContainer 插入 DataGrid。
我的问题是插入的 DataGrid 被禁用,而我的要求是用户可以编辑 DataGrid 的内容。
如何使插入到 RichTextBox 中的 InlineUiContainer 启用?
【问题讨论】:
RichTextBox 必须是 ReadOnly 才能使控件响应事件。我通过将 RichTextBox 默认设置为 ReadOnly 然后在焦点上变为可编辑来解决此问题。
我的问题是在 DataGrid 中有 RichTextBoxes,每个 RichTextbox 中还嵌入了其他控件。听起来您的 RTB 永远不会失去焦点 ReadOnly,因为只有一个 RTB。
您必须想出一些策略,在特定条件下将 RTB 置于只读模式。
【讨论】:
我也遇到了同样的问题,网上没找到答案……
这就是我所做的,有点难看,但它有效:
创建一个自定义控件并将数据网格放入其中。 在自定义控件中添加以下代码:
public CustomControl()
{
InitializeComponent();
this.IsEnabledChanged += EnableChanged;
}
private int counter = 0;
private void EnableChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (counter == 0)
{
this.IsEnabled = (bool) e.OldValue;
counter = 1;
return;
}
counter = 0;
}
祝你好运!
【讨论】: