2017-12-24 35 views
0

カレンダーをマウスの離脱イベントで消さなければならないDatePickerを開発する必要がある状況で、カレンダーから選択した日付のテキストボックスのみが表示され、ユーザーが日付を選択できるように、カレンダー部分はDatePickerのマウス入力時にのみ表示され、選択してフォーカスを失うとすぐに消えます。datepickerのカレンダーの表示を非表示のwpfに設定する方法

DatePickerのどのコントロールを[表示]または[非表示]に設定する必要があるかどうかはわかりません。 私はxamlのリソース部分で与えられたリンクで見つかったDatePickerテンプレートから、可視性を非表示にするかVisibleに設定していますが、何も機能しませんでした。例えばCalendarStyle私のXAMLコードで

<DatePicker x:Name="MyDatePicker" Margin="0,0,305,28" 
    CalendarStyle="{StaticResource CalendarName}"> 
</DatePicker> 

以下全体のコントロールスタイルはここにある:

<Window x:Class="calendarHideTest.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"> 
    <Window.Resources> 
     <!--Here i kept the style of DatePicker written at link https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/calendar-styles-and-templates-->     
    </Window.Resources> 
    <StackPanel> 
     <DatePicker x:Name="MyDatePicker" 
        Margin="0,0,305,28" 
        CalendarStyle="{StaticResource CalendarName}"> 
     </DatePicker> 
    </StackPanel> 
</Window> 

私はカレンダーを作るために、視認性「隠し」に設定している日付ピッカーのサブコントロール、知りたいです一部が消える

答えて

0

私が正しく理解していれば、このアプローチを使用できます。

<DatePicker x:Name="datePicker" Width="100" Height="50" MouseEnter="DatePicker_OnMouseEnter" MouseLeave="DatePicker_OnMouseLeave" Loaded="DatePicker_OnLoaded"/> 

コードビハインドです。

... 
    private void DatePicker_OnMouseEnter(object sender, MouseEventArgs e) 
    { 
     ChangeCalendarButtonVisibility(Visibility.Visible); 
    } 

    private void DatePicker_OnMouseLeave(object sender, MouseEventArgs e) 
    { 
     ChangeCalendarButtonVisibility(Visibility.Collapsed); 
    } 

    private void DatePicker_OnLoaded(object sender, RoutedEventArgs e) 
    { 
     //We use loaded event to hide button in initial state 
     ChangeCalendarButtonVisibility(Visibility.Collapsed); 
    } 

    private Button GetCalendarButton() 
    { 
     var template = datePicker.Template; 
     var button = (Button)template.FindName("PART_Button", datePicker); 
     return button; 
    } 

    private void ChangeCalendarButtonVisibility(Visibility visibility) 
    { 
     var button = GetCalendarButton(); 
     if (button != null) 
     { 
      button.Visibility = visibility; 
     } 
    } 
... 

制御リソースにDatePickerスタイルを格納する必要はありません。

関連する問題