0

我正在 Silverlight 5 中创建一个简单的应用程序来测试另一个应用程序从中提取数据的能力。目标是拥有尽可能多的输入类型来测试其他应用程序的多功能性。我正在尝试使用以下代码将 DatePicker 添加到此表单的一部分:

<sdk:DatePicker Grid.Row="3" Grid.Column="3" Height="25" Width="190" >
</sdk:DatePicker>

这工作得很好,但我想让 DatePicker 的 TextBox 组件只读。这样做的原因是我只希望在此文本框中输入有效日期,因为然后我从中提取文本并将其放入 DataGrid。任何帮助,将不胜感激!如果您需要我提供更多信息,请询问。

4

1 回答 1

2

创建您自己的继承自 DatePicker 的控件:

using System.Windows.Controls.Primitives;

public class ReadonlyDatePicker : DatePicker
{
    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        var textBox = this.GetTemplateChild("TextBox") as DatePickerTextBox;
        textBox.IsReadOnly = true;
    }
}

将命名空间添加到页面中的项目中:

xmlns:MyControls="clr-namespace:MyControlsNamespace"

然后使用您的命名空间别名引用您的 DatePicker:

<MyControls:ReadonlyDatePicker Grid.Row="3" Grid.Column="3" Height="25" Width="190" >
</MyControls:ReadonlyDatePicker>
于 2012-06-27T18:26:06.810 回答