0

Windows 용 Store 및 Windows Phone (WinRT)의 DatePicker 및 TimePicker는 기본적으로 오늘 날짜와 현재 시간을 표시하지만 초기에는 두 컨트롤을 모두 일부로 설정하려고합니다. 기본 문자열 "선택 기한/시간"은 선택 사항이므로 말할 수 있습니다.Universal Windows Apps 8.1 DatePicker 및 TimePicker 설정 기본 문자열

난 단지

public DateTimeOffset? DueDate { get; set; } 

public TimeSpan? DueTime { get; set; } 

나는 다음과 같은 방법으로 시도했습니다, 모든 솔루션을 제안 해주십시오 MVVM 패턴과 MVVM 빛 라이브러리를 사용하여 다음과 같은 속성에 바인딩하고있다.

두 개의 컨버터를 사용했지만 문제가 있습니다.

"만기일 설정"버튼을 클릭 한 다음 날짜, 월 또는 연도를 변경하지 않고 DatePicker 팝업 화면에서 눈금을 클릭하면 변환기가 실행되지 않고 날짜를 변경할 때, 월 또는 년 다음 화재, 나는 속성 바인딩이 nullable DateTimeOffset 경우에도 XAML의 DatePicker Date 값을 현재 날짜로 보여줍니다, IsHitTestVisible = "False"는 버튼이 수 있기 때문에 좋은 기울기 효과를 제거합니다. 'T는 더 이상 클릭 할 수 있지만, 나를

<Page 
    x:Class="UWP.MVVM.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UWP.MVVM" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:vm="using:UWP.MVVM.ViewModels" 
    xmlns:interactivity="using:Microsoft.Xaml.Interactivity" 
    xmlns:core="using:Microsoft.Xaml.Interactions.Core" 
    xmlns:converters="using:UWP.MVVM.Converters" 
    mc:Ignorable="d" 
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Page.Resources> 
     <converters:DateTimeOffsetToVisibilityConverter x:Key="DateTimeOffsetToVisibilityConverter"/> 
     <converters:DateTimeOffsetToOpacityConverter x:Key="DateTimeOffsetToOpacityConverter"/> 
    </Page.Resources> 

    <Grid Margin="24,24"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <TextBox Header="First Name" 
       Text="{Binding Person.FirstName}"/> 
     <DatePicker Name="DateOfBirth" 
        Date="{Binding Person.DateOfBirth, Mode=TwoWay}" 
        Grid.Row="1" 
        Opacity="{Binding Person.DateOfBirth, Converter={StaticResource DateTimeOffsetToOpacityConverter}}"/> 
     <Button Grid.Row="1" 
       Content="Set Due Date" 
       IsHitTestVisible="False" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       HorizontalContentAlignment="Left" 
       Visibility="{Binding Person.DateOfBirth, Converter={StaticResource DateTimeOffsetToVisibilityConverter}}"/> 
    </Grid> 
</Page> 

namespace UWP.MVVM.Converters 
{ 
    using System; 
    using Windows.UI.Xaml; 
    using Windows.UI.Xaml.Data; 

    public class DateTimeOffsetToVisibilityConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, string language) 
     { 
      if (value == null) 
      { 
       return Visibility.Visible; 
      } 
      else 
      { 
       return Visibility.Collapsed; 
      } 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, string language) 
     { 
      if (value == Visibility.Visible) 
      { 
       return null; 
      } 
      else 
      { 
       return DateTimeOffset.Now; 
      } 
     } 
    } 
} 

namespace UWP.MVVM.Converters 
{ 
    using System; 
    using Windows.UI.Xaml; 
    using Windows.UI.Xaml.Data; 

    public class DateTimeOffsetToOpacityConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, string language) 
     { 
      if (value == null) 
      { 
       return 0D; 
      } 
      else 
      { 
       return 1D; 
      } 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, string language) 
     { 
      if (value == 0D) 
      { 
       return null; 
      } 
      else 
      { 
       return DateTimeOffset.Now; 
      } 
     } 
    } 
} 

답변

1

당신이 원하는 텍스트의 날짜 선택기에 TextBlock에 넣을 수의 기울기 효과가 있어야합니다 옵션이 아닙니다.

변환기를 사용하여 DueDate/DueTime 속성의 값에 따라 textblock의 가시성을 설정합니다 (null 반환이 표시되면 else 반환 축소 됨).

+0

나는 이것을 시도했지만 문제가 생겼다. 사용자가 TextBlock을 클릭 할 때 DatePicker가 시작되어야하지만 DatePicker에 바인딩하기 위해 바인딩 할 수있는 속성이 없다면이 게시물 http : // transoceanic을 보았습니다. .blogspot.in/2011/08/wp7-create-datepicker-control.html하지만 MVVM에서이 작업을 수행해야합니다. 상속하고 DependencyProperty를 만들어야한다고 생각합니다. 그러나 누군가가 전에했는지 알고 싶습니다. 보다 나은 방법으로 –

+0

바인드 된 date 속성이 null 인 경우 contentpresenter의 불투명도를 0으로 설정하는 datepicker 스타일의 변환기가 있어야합니다. –

+0

처음에 "datepicker를 시작하는 방법"에 대해 생각하고 있었기 때문에 내가 말한 것을 이해하지 못했습니다. IsHitTestVisible = "False"로 돌아가 보았습니다. XAML로 작업 한 지 2 년이되었으므로 편집을 확인하십시오. –

관련 문제