WPF工具包DateTimePicker使时间文本框不可编辑

时间:2017-05-09 09:12:28

标签: c# wpf mvvm wpftoolkit

我正在尝试使日历的时间选择器部分具有只读文本框。因为默认情况下它允许用户键入 无效的时间和抛出索引超出范围。我喜欢从向上箭头中选择时间选择器并禁用在该文本框中输入。

我尝试将TimePickerVisibility用于hidden,但它隐藏了时间选择器。

enter image description here

1 个答案:

答案 0 :(得分:2)

更新1
我刚才注意到你使用的是DateTimePicker,而不是TimePicker,
所以你需要以这种方式将DateTimePicker的TimePicker设置为AllowTextInput:

    <xctk:DateTimePicker HorizontalAlignment="Left" Margin="67,200,0,0" VerticalAlignment="Top" Width="228">
        <xctk:DateTimePicker.Resources>
            <Style TargetType="{x:Type xctk:TimePicker}">
                <Setter Property="AllowTextInput" Value="False"/>
            </Style>
        </xctk:DateTimePicker.Resources>
    </xctk:DateTimePicker>

UPDATE2
如果要禁用所有TextInput,以便用户无法同时输入日期和时间,您可以这样做:

<xctk:DateTimePicker HorizontalAlignment="Left" Margin="67,200,0,0" VerticalAlignment="Top" Width="228">
    <xctk:DateTimePicker.Resources>
        <Style TargetType="{x:Type xctk:DateTimePicker}">
            <Setter Property="AllowTextInput" Value="False"/>
        </Style>
        <Style TargetType="{x:Type xctk:TimePicker}">
            <Setter Property="AllowTextInput" Value="False"/>
        </Style>
    </xctk:DateTimePicker.Resources>
</xctk:DateTimePicker>

如果您将使用标准DatePicker,则以下列方式完成相同操作。 对于标准WPF DatePicker,您需要将DatePickerTextBox设置为ReadOnly。你可以这样做:

<DatePicker HorizontalAlignment="Left" Margin="138,82,0,0" VerticalAlignment="Top">
    <DatePicker.Resources>
        <Style TargetType="DatePickerTextBox">
            <Setter Property="IsReadOnly" Value="True"/>
        </Style>
    </DatePicker.Resources>
</DatePicker>