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;
}
}
}
}
나는 이것을 시도했지만 문제가 생겼다. 사용자가 TextBlock을 클릭 할 때 DatePicker가 시작되어야하지만 DatePicker에 바인딩하기 위해 바인딩 할 수있는 속성이 없다면이 게시물 http : // transoceanic을 보았습니다. .blogspot.in/2011/08/wp7-create-datepicker-control.html하지만 MVVM에서이 작업을 수행해야합니다. 상속하고 DependencyProperty를 만들어야한다고 생각합니다. 그러나 누군가가 전에했는지 알고 싶습니다. 보다 나은 방법으로 –
바인드 된 date 속성이 null 인 경우 contentpresenter의 불투명도를 0으로 설정하는 datepicker 스타일의 변환기가 있어야합니다. –
처음에 "datepicker를 시작하는 방법"에 대해 생각하고 있었기 때문에 내가 말한 것을 이해하지 못했습니다. IsHitTestVisible = "False"로 돌아가 보았습니다. XAML로 작업 한 지 2 년이되었으므로 편집을 확인하십시오. –