【问题标题】:How can I set a Silverlight DatePicker Control to be ReadOnly?如何将 Silverlight DatePicker 控件设置为只读?
【发布时间】:2009-04-20 11:58:56
【问题描述】:

如何将 Silverlight 项目中使用的 System.Windows.Controls.DatePicker 控件设置为 ReadOnly ?

我似乎无法在 Xaml 或后面的代码中设置任何属性。

【问题讨论】:

    标签: silverlight datepicker


    【解决方案1】:

    我找到了日期选择器的源代码并添加了一个 ReadOnly 属性。

    ..和“是的”有一个值得这样做的理由。我想要有 3 个状态:

    1. 正常
    2. 已禁用(灰色外观)
    3. ReadOnly(未变灰且没有日历按钮...还更改了文本框的边框,使其看起来像一个标签)

    3 的风格是我的偏好,但特别是我想区分禁用的控件(灰色)和只读“视觉”明智。

    不确定是否要发布代码(有很多)...或者是否有人仍然感兴趣 ;-)

    【讨论】:

      【解决方案2】:

      我解决了为 DatePickerTextBox 控件设置新样式的问题。此控件是 DatePicker 样式的一部分。然后使用这些行,您可以将所有可以访问此样式的 DatePicker 控件设为只读。这只会使 readonly 手动编辑日期,用户仍然可以使用下拉按钮选择日期。

      <Style TargetType="prim:DatePickerTextBox">
        <Setter Property="IsReadOnly" Value="True"/>
      </Style>
      

      【讨论】:

        【解决方案3】:

        你为什么想要?

        DatePicker 是一个美化的组合框,它会下拉日历而不是列表。如果它变成只读,那么它实际上是一个只读文本框?

        如果它纯粹是为了外观,那么一种解决方法是制作控件模板的副本并对其进行编辑,使其“禁用”状态看起来与其“活动”状态相同,然后在您需要只读行为时将其设置为禁用。

        【讨论】:

        • 原因是我可以只显示相同的控件,而不必在只读情况下将其更改为文本框。我基本上只需要它来显示日期,而用户无法通过直接在文本框部分或下拉日历中输入来更改它。
        • 您为什么要这样做?
        • 在 DatePicker 上没有 ReadOnly 这样的属性。至于“你为什么想要”,问题中没有足够的信息来理解他想要的行为。
        • 一个非常正当的理由是显示当前选择的日期,并且只允许用户在控件处于“编辑”模式时更改该日期。它省去了演示者和切换可见性的麻烦。
        【解决方案4】:

        仅处理日期更改事件并抑制它并将其恢复为今天的日期(或其他某个设定的日期)怎么样?

        【讨论】:

        • 这种方法的弱点是,对于最终用户来说,他们可以使用控件来做某事......但是当他们尝试时,他们的条目“丢失”并被还原。它会增加你的人工智能的混乱。最好直观地表明该控件仅用于显示目的。
        • 而是让用户意识到他甚至不应该尝试
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 2012-05-17
        • 2012-12-07
        相关资源
        最近更新 更多