我有一个日期选择器,但它允许我输入任何文本。我想禁止用户输入文字。应允许用户从日历中选择日期。
<Window x:Class="MyTestForDatePicker.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<!--<Grid>-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<DatePicker Grid.Column="0" Grid.Row="0" Margin="2" Name="MySelectedDate" VerticalContentAlignment="Center" ></DatePicker>
<DatePickerTextBox Grid.Column="1" Grid.Row="3" Margin="2" Name="SelectedDate" IsReadOnly="True"></DatePickerTextBox>
<Button Grid.Column="1" Grid.Row="1" Margin="100,102,203,154" VerticalContentAlignment="Center" Name="Ok" Click="Ok_Click_1"/>
</Grid>
答案 0 :(得分:29)
似乎DatePicker上没有任何属性可以使TextBox只读。
尝试以下样式设置
<DatePicker x:Name="MyDatePicker">
<DatePicker.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DatePicker.Resources>
</DatePicker>
答案 1 :(得分:15)
添加属性
Focusable = "False"
到你的日期选择器。这不应该允许用户在datepicker文本框中输入任何字符串
<DatePickerTextBox Grid.Column="1" Grid.Row="3" Margin="2" Name="SelectedDate" IsReadOnly="True" Focusable="False"></DatePickerTextBox>
答案 2 :(得分:6)
将IsHitTestVisible
和Focusable
属性设置为false
。
答案 3 :(得分:0)
这个适合我(所有日期采访者的全球风格):
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBox IsReadOnly="True" x:Name="PART_TextBox" Text="{Binding Path=SelectedDate, StringFormat='dd.MM.yyyy', RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
请注意:它还会设置自定义字符串格式。
答案 4 :(得分:0)
只需将IsEnabled设置为false即可解决您的问题
答案 5 :(得分:0)
无需为datepicker设置任何内容,当您将焦点移至datepicker时,它将自动删除文本,只有日期保留在文本框中。