微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF 材料设计日期选择器选择范围又名范围选择器

如何解决WPF 材料设计日期选择器选择范围又名范围选择器

搜索了很多,但找不到任何可用的解决方案,所以我决定在这里提问。我目前正在将 WPF Material design 用于多个控件 (https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit)。日期选择器工作正常,但是我已经到了需要选择日期范围而不是单个范围的地步。我需要能够这样做:

[1]: https://i.stack.imgur.com/TgRAS.png

有没有办法选择范围而不是单个日期?

这是我的 Datepicker.xaml 代码的一部分:

        <DatePicker x:Name="ReportDateTimePicker" HorizontalAlignment="Center" VerticalAlignment="Center" Height="40" 
                    Padding="0,3,0" Margin="10,1,10,-1" FirstDayOfWeek="Monday" Width="148"
                    FontFamily="{StaticResource Roboto}" 
                    CalendarStyle="{DynamicResource DatePickerCalendarStyle}"
                    SelectedDate="{Binding StartDate}"/>

这部分也来自样式 datetimepicker.xaml:

<Style targettype="{x:Type DatePicker}">
    <Setter Property="Foreground" Value="#FF333333" />
    <Setter Property="FontSize" Value="14" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="IsTodayHighlighted" Value="True" />
    <!--<Setter Property="SelectedDateFormat" Value="Short" />-->
    <Setter Property="Padding" Value="0" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <!--Set CalendarStyle to DatePickerCalendarStyle.-->
    <Setter Property="CalendarStyle" Value="{DynamicResource DatePickerCalendarStyle}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate targettype="{x:Type DatePicker}">
                <Border BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
                    <Border.BorderBrush>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="{DynamicResource BorderLightColor}" Offset="0" />
                            <GradientStop Color="{DynamicResource BorderDarkColor}" Offset="1" />
                        </LinearGradientBrush>
                    </Border.BorderBrush>
                    <Border.Background>
                        <LinearGradientBrush EndPoint="0.5,0">
                            <GradientStop Color="Transparent" Offset="0" />
                            <GradientStop Color="Transparent" Offset="1" />
                        </LinearGradientBrush>
                    </Border.Background>
                    <visualstatemanager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="normal" />
                            <VisualState x:Name="disabled">
                                <Storyboard>
                                    <DoubleAnimation Duration="0"
                                           To="1"
                                           Storyboard.TargetProperty="Opacity"
                                           Storyboard.TargetName="PART_disabledVisual" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </visualstatemanager.VisualStateGroups>
                    <Grid x:Name="PART_Root"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                        <Grid.ColumnDeFinitions>
                            <ColumnDeFinition Width="*" />
                            <ColumnDeFinition Width="Auto" />
                        </Grid.ColumnDeFinitions>
                        <Button x:Name="PART_Button"
                                Grid.Column="1"
                                Foreground="{TemplateBinding Foreground}"
                                Focusable="False"
                                HorizontalAlignment="Left"
                                Margin="3,0"
                                Grid.Row="0"
                                Style="{StaticResource DropDownButtonStyle}"
                                VerticalAlignment="Center" />
                        <DatePickerTextBox x:Name="PART_TextBox"/>
                        <Grid x:Name="PART_disabledVisual"
                                  Grid.ColumnSpan="2"
                                  Grid.Column="0"
                                  IsHitTestVisible="False"
                                  Opacity="0"
                                  Grid.Row="0">
                            <Grid.ColumnDeFinitions>
                                <ColumnDeFinition Width="*" />
                                <ColumnDeFinition Width="Auto" />
                            </Grid.ColumnDeFinitions>
                            <Rectangle Grid.Column="0"
                                     Fill="#A5FFFFFF"
                                     RadiusY="1"
                                     Grid.Row="0"
                                     RadiusX="1" />
                            <Rectangle Grid.Column="1"
                                     Fill="Transparent"
                                     Height="30"
                                     Margin="3,0"
                                     RadiusY="1"
                                     Grid.Row="0"
                                     RadiusX="1"
                                     Width="260"/>
                            <Popup x:Name="PART_Popup"
                                     AllowsTransparency="True"
                                     Placement="Bottom"
                                     PlacementTarget="{Binding ElementName=PART_TextBox}"
                                     StaysOpen="False" />
                        </Grid>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。