【问题标题】:How do I make the Textbox component of a DatePicker read-only in Silverlight 5?如何在 Silverlight 5 中将 DatePicker 的文本框组件设为只读?
【发布时间】:2013-04-03 15:44:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    创建您自己的继承自 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>
    

    【讨论】:

    • 太棒了,非常感谢!这正是我所需要的,在实现它的过程中,我学会了如何实现用户创建的控件。这是我第一次使用 Silverlight,所以您的帮助对我来说非常有价值。感谢您编辑您的答案以使其更易于理解。我能够自己找到答案,但希望如果其他人有同样的问题,他们也能从中吸取教训。
    • 我需要添加这一行。 textBox.IsEnabled = false;
    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多