如何在Silverlight 5中将DatePicker的Textbox组件设为只读?

时间:2012-06-27 17:56:55

标签: silverlight

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

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

这完全正常,但我想将DatePicker的TextBox组件设为只读。这样做的原因是我只希望在此文本框中输入有效日期,因为我从中拉出文本并放入DataGrid。任何帮助,将不胜感激!如果您需要我提供更多信息,请询问。

1 个答案:

答案 0 :(得分: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>