2009-02-18 26 views

cevap

41

Lütfen dikkat: sadece NET 4.0 çalışma zamanı olarak 3.5 Çerçevesi kapsamında WPF uygulanan aşağıdaki cevabım datetime control vardır kendi.

Varsayılan olarak WPF 3.5, winforms gibi bir tarih seçici seçiciyle birlikte gelmiyor. Ancak, downloaded here olabilir Microsoft tarafından üretilen WPF tool kit içinde bir tarih seçici eklenmiştir. Gelecekteki bir sürümde çerçevenin bir parçası olacak sanırım.

web sitesindeki talimatları takip ederek, WPFToolkit.dll bir başvuru eklemek alet kutusuna görebilir ve uygulama ile dağıtmak için basittir. Bundan önce

mevcut diğer insanlar 3. parti toplayıcıları yaratmıştı oldu (tercih olabilir) veya alternatif bir WPF uygulamasında Win denetimi kullanarak daha az ideal bir çözüm kullandı.

Güncelleme: Bu çok soru da diğer bağlantılar ile birlikte bir walk through for the datepicker bir bağlantı vardır this one çok benzer. WPF için kutu DateTime seçicinin çıkış yok

+0

Araç kitinin henüz üretime hazır olmadığı küçük bir önlem: http://www.codeplex.com/wpf/Wiki/View.aspx?title=VSM%20Memory%20Leak – Adrian

+0

Strike that - it Ocak ayında yeniden piyasaya sürüldü. – Adrian

+22

Tarih seçicide tarih seçiciye atıfta bulunmuyorsunuz. Bunun WPF Toolkit'in içinde olduğunu sanmıyorum. – HAdes

0

WPF Tool Kit DatePicker yoktur, ama ben WPF ToolKit DateTime Seçici görmedim. Bu yüzden John bahsediyor DateTimePicker denetimini ne tür bilmiyorum.

2

WPF Extended WPF Toolkit Sürüm 1.4'e dahil edilen denetimler için.0, http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-calendar-datepicker-walkthrough.aspx

, DatePicker Walkthrough bakınız Takvim & için http://elegantcode.com/2011/04/08/extended-wpf-toolkit-release-1-4-0/

başvurmak Ve göz cutomize ve Microsoft Expression Studio tarafından hissedebilirsiniz lütfen [Use Edit Template option] Numune burada gösterilmektedir: için ad aşağıdaki

Ekle xaml sayfa

xmlns:toolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended" 
xmlns:Microsoft_Windows_Controls_Core_Converters="clr-namespace:Microsoft.Windows.Controls.Core.Converters;assembly=WPFToolkit.Extended" 
xmlns:Microsoft_Windows_Controls_Chromes="clr-namespace:Microsoft.Windows.Controls.Chromes;assembly=WPFToolkit.Extended" 

Ekle Aşağıdakiler Sayfa/Pencere kaynaklarının

<!--DateTimePicker Customized Style--> 
     <Style x:Key="DateTimePickerStyle1" TargetType="{x:Type toolkit:DateTimePicker}"> 
      <Setter Property="TimeWatermarkTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False"/> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="WatermarkTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False"/> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type toolkit:DateTimePicker}"> 
         <Border> 
          <Grid> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="*"/> 
             <ColumnDefinition Width="Auto"/> 
            </Grid.ColumnDefinitions> 

            <toolkit:DateTimeUpDown AllowSpin="{TemplateBinding AllowSpin}" 
                    BorderThickness="1,1,0,1" 
                    FormatString="{TemplateBinding FormatString}" 
                    Format="{TemplateBinding Format}" 
                    ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}" 
                    Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}" 
                    WatermarkTemplate="{TemplateBinding WatermarkTemplate}" 
                    Watermark="{TemplateBinding Watermark}" 
                    Foreground="#FFEFE3E3" 
                    BorderBrush="#FFEBB31A"> 
             <toolkit:DateTimeUpDown.Background> 
              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
               <GradientStop Color="Black" Offset="0"/> 
               <GradientStop Color="#FF2F2828" Offset="1"/> 
              </LinearGradientBrush> 
             </toolkit:DateTimeUpDown.Background> 
            </toolkit:DateTimeUpDown> 

            <ToggleButton x:Name="_calendarToggleButton" 
                Background="{x:Null}" Grid.Column="1" IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}"> 
             <ToggleButton.IsHitTestVisible> 
              <Binding Path="IsOpen" RelativeSource="{RelativeSource TemplatedParent}"> 
               <Binding.Converter> 
                <Microsoft_Windows_Controls_Core_Converters:InverseBoolConverter/> 
               </Binding.Converter> 
              </Binding> 
             </ToggleButton.IsHitTestVisible> 
             <ToggleButton.Style> 
              <Style TargetType="{x:Type ToggleButton}"> 
               <Setter Property="Template"> 
                <Setter.Value> 
                 <ControlTemplate TargetType="{x:Type ToggleButton}"> 
                  <Grid SnapsToDevicePixels="True"> 
                   <Microsoft_Windows_Controls_Chromes:ButtonChrome x:Name="ToggleButtonChrome" CornerRadius="0,2.75,2.75,0" InnerCornerRadius="0,1.75,1.75,0" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" BorderBrush="{x:Null}"> 
                    <Microsoft_Windows_Controls_Chromes:ButtonChrome.Background> 
                     <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
                      <GradientStop Color="#FFF3F3F3" Offset="1"/> 
                      <GradientStop Color="#7FC0A112"/> 
                     </LinearGradientBrush> 
                    </Microsoft_Windows_Controls_Chromes:ButtonChrome.Background> 
                   </Microsoft_Windows_Controls_Chromes:ButtonChrome> 
                   <Grid> 
                    <Grid.ColumnDefinitions> 
                     <ColumnDefinition Width="*"/> 
                     <ColumnDefinition Width="Auto"/> 
                    </Grid.ColumnDefinitions> 
                    <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Stretch"/> 
                    <Grid x:Name="arrowGlyph" Grid.Column="1" IsHitTestVisible="False" Margin="5"> 
                     <Path Data="M0,1C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1z" Fill="#FF82E511" Height="4" Width="7"/> 
                    </Grid> 
                   </Grid> 
                  </Grid> 
                 </ControlTemplate> 
                </Setter.Value> 
               </Setter> 
              </Style> 
             </ToggleButton.Style> 
            </ToggleButton> 
           </Grid> 

           <Popup IsOpen="{Binding IsChecked, ElementName=_calendarToggleButton}" StaysOpen="False"> 
            <Border BorderThickness="1" Padding="3"> 
             <Border.BorderBrush> 
              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
               <GradientStop Color="#FFA3AEB9" Offset="0"/> 
               <GradientStop Color="#FF8399A9" Offset="0.375"/> 
               <GradientStop Color="#FF718597" Offset="0.375"/> 
               <GradientStop Color="#FFD2C217" Offset="1"/> 
              </LinearGradientBrush> 
             </Border.BorderBrush> 
             <Border.Background> 
              <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
               <GradientStop Color="White" Offset="0"/> 
               <GradientStop Color="#FFE9B116" Offset="1"/> 
              </LinearGradientBrush> 
             </Border.Background> 
             <StackPanel Background="{x:Null}"> 
              <Calendar x:Name="Part_Calendar" BorderThickness="0" DisplayDate="2011-06-28" Background="#7FE0B41A"/> 
              <toolkit:TimePicker x:Name="Part_TimeUpDown" Format="ShortTime" Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}" WatermarkTemplate="{TemplateBinding TimeWatermarkTemplate}" Watermark="{TemplateBinding TimeWatermark}" Background="{x:Null}" Style="{DynamicResource TimePickerStyle1}"/> 
             </StackPanel> 
            </Border> 
           </Popup> 
          </Grid> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

     <Style x:Key="TimePickerStyle1" 
       TargetType="{x:Type toolkit:TimePicker}"> 
      <Setter Property="WatermarkTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False"/> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type toolkit:TimePicker}"> 
         <Border> 
          <Grid> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="*"/> 
             <ColumnDefinition Width="Auto"/> 
            </Grid.ColumnDefinitions> 
            <Grid> 
             <toolkit:DateTimeUpDown x:Name="PART_TimeUpDown" AllowSpin="{TemplateBinding AllowSpin}" BorderThickness="1,1,0,1" FormatString="{TemplateBinding FormatString}" ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}" Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}" WatermarkTemplate="{TemplateBinding WatermarkTemplate}" Watermark="{TemplateBinding Watermark}" Background="#7FE0B41A" BorderBrush="#FFF9F2F2"> 
              <toolkit:DateTimeUpDown.Format> 
               <TemplateBinding Property="Format"> 
                <TemplateBinding.Converter> 
                 <Microsoft_Windows_Controls_Core_Converters:TimeFormatToDateTimeFormatConverter/> 
                </TemplateBinding.Converter> 
               </TemplateBinding> 
              </toolkit:DateTimeUpDown.Format> 
             </toolkit:DateTimeUpDown> 
            </Grid> 
            <ToggleButton x:Name="_timePickerToggleButton" Grid.Column="1" IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}" > 
             <ToggleButton.IsHitTestVisible> 
              <Binding Path="IsOpen" RelativeSource="{RelativeSource TemplatedParent}"> 
               <Binding.Converter> 
                <Microsoft_Windows_Controls_Core_Converters:InverseBoolConverter/> 
               </Binding.Converter> 
              </Binding> 
             </ToggleButton.IsHitTestVisible> 
             <ToggleButton.Style> 
              <Style TargetType="{x:Type ToggleButton}"> 
               <Setter Property="Template"> 
                <Setter.Value> 
                 <ControlTemplate TargetType="{x:Type ToggleButton}"> 
                  <Grid SnapsToDevicePixels="True"> 
                   <Microsoft_Windows_Controls_Chromes:ButtonChrome x:Name="ToggleButtonChrome" CornerRadius="0,2.75,2.75,0" InnerCornerRadius="0,1.75,1.75,0" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/> 
                   <Grid> 
                    <Grid.ColumnDefinitions> 
                     <ColumnDefinition Width="*"/> 
                     <ColumnDefinition Width="Auto"/> 
                    </Grid.ColumnDefinitions> 
                    <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Stretch"/> 
                    <Grid x:Name="arrowGlyph" Grid.Column="1" IsHitTestVisible="False" Margin="5"> 
                     <Path Data="M0,1C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1z" Fill="Black" Height="4" Width="7"/> 
                    </Grid> 
                   </Grid> 
                  </Grid> 
                 </ControlTemplate> 
                </Setter.Value> 
               </Setter> 
              </Style> 
             </ToggleButton.Style> 
            </ToggleButton> 
           </Grid> 

           <Popup IsOpen="{Binding IsChecked, ElementName=_timePickerToggleButton}" StaysOpen="False"> 
            <Border BorderThickness="1"> 
             <Border.Background> 
              <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
               <GradientStop Color="White" Offset="0"/> 
               <GradientStop Color="#FFE7C857" Offset="1"/> 
              </LinearGradientBrush> 
             </Border.Background> 
             <Border.BorderBrush> 
              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
               <GradientStop Color="#FFA3AEB9" Offset="0"/> 
               <GradientStop Color="#FF8399A9" Offset="0.375"/> 
               <GradientStop Color="#FF718597" Offset="0.375"/> 
               <GradientStop Color="#FF617584" Offset="1"/> 
              </LinearGradientBrush> 
             </Border.BorderBrush> 

             <Grid> 
              <ListBox x:Name="PART_TimeListItems" BorderThickness="0" DisplayMemberPath="Display" Height="130" Width="150" Background="#7FE0B41A"> 
               <ListBox.ItemContainerStyle> 
                <Style TargetType="{x:Type ListBoxItem}"> 
                 <Setter Property="Template"> 
                  <Setter.Value> 
                   <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
                    <Border x:Name="Border" SnapsToDevicePixels="True"> 
                     <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Margin="4"/> 
                    </Border> 
                    <ControlTemplate.Triggers> 
                     <Trigger Property="IsMouseOver" Value="True"> 
                      <Setter Property="Background" TargetName="Border" Value="#FFE7F5FD"/> 
                     </Trigger> 
                     <Trigger Property="IsSelected" Value="True"> 
                      <Setter Property="Background" TargetName="Border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
                      <Setter Property="Foreground" Value="White"/> 
                     </Trigger> 
                    </ControlTemplate.Triggers> 
                   </ControlTemplate> 
                  </Setter.Value> 
                 </Setter> 
                </Style> 
               </ListBox.ItemContainerStyle> 
              </ListBox> 
             </Grid> 
            </Border> 
           </Popup> 
          </Grid> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Ve Pencerede sen

Teşekkür olarak stilini kullanabilirsiniz,

İlgili konular