Показване само на месец и година в DatePicker WP8

    <toolkit:DatePicker Value="2/28/2010" />

Трябва да покажа само месец и година в моя инструмент за избор на дата (WP8). Опитах се да направя това по този начин, но не работи:

    <toolkit:DatePicker Value="{Binding DateValue}" ValueStringFormat="{}{0:MM-yyyy}" />

Трябва ми и за DatePickerPage.


person CatCap    schedule 12.09.2013    source източник


Отговори (5)


Не можете да приложите това чрез добавяне на формат на низ xaml. За да приложите такава функционалност, трябва да редактирате кода на инструментариума. За целта можете да изтеглите кода с отворен код от CodePlex. След като изтеглите проекта, намерете класа Date Picker и редактирайте съответните методи, за да премахнете датата. прекомпилирайте източника в режим на освобождаване и можете да използвате този нов dll.

person Rakesh R Nair    schedule 12.09.2013

Ако не искате да копирате страницата от Codeplex, можете да я разширите и да замените метода GetSelectorsOrderedByCulturePattern, за да промените видимостта на селектора за ден. В примера по-долу го поправих на месец и след това на година, което може да не искате във вашата версия. Също така имам достъп до контролите по име, така че внимавайте с бъдещите актуализации на WindowsPhone Toolkit.

<toolkit:DatePickerPage
    x:Class="MyApp.MonthYearPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    mc:Ignorable="d"
    shell:SystemTray.IsVisible="True">

</toolkit:DatePickerPage>

И

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using Microsoft.Phone.Controls.Primitives;
using System.Diagnostics;
using System.Windows.Media;

namespace MyApp
{
    public partial class MonthYearPage : DatePickerPage
    {
        public MonthYearPage()
        {
            InitializeComponent();
        }

        protected override IEnumerable<LoopingSelector> GetSelectorsOrderedByCulturePattern()
        {
            var PrimarySelector = ((Grid)Content).FindName("PrimarySelector") as LoopingSelector;
            var SecondarySelector = ((Grid)Content).FindName("SecondarySelector") as LoopingSelector;
            var TertiarySelector = ((Grid)Content).FindName("TretiarySelector") as LoopingSelector;

            var selectors = GetSelectorsOrderedByCulturePattern(
                "DMY",
                new char[] { 'Y', 'M', 'D' },
                new LoopingSelector[] { PrimarySelector, SecondarySelector, TertiarySelector });

            // Passing "DMY" in on the previous line makes sure the day selector
            // is the first one in the enumeration. You may want to change the order
            // of 'M' and 'Y' in that string for your needs or depending on region.
            selectors.First<LoopingSelector>().Visibility = Visibility.Collapsed;
            return selectors;
        }
    }
}
person LukeChastain    schedule 24.03.2014

{}{0:"Y","y"} приятен ден :D ( информация тук --> http://msdn.microsoft.com/en-us/library/az4se3k1%28v=VS.95%29.aspx)

person MatDev8    schedule 12.09.2013
comment
‹toolkit:DatePicker Value={Binding DateValue} ValueStringFormat={}{0:Y,y} /› Такъв код не се компилира. :( - person CatCap; 12.09.2013
comment
съжалявам, опитайте ValueStringFormat={}{0:Y,y} или ValueStringFormat={}{0:Y:y}...не мога да тествам в моя компютър в момента, съжалявам.Ако не работи, ще тествай го тази вечер :) - person MatDev8; 12.09.2013
comment
‹toolkit:DatePicker Value={Binding DateValue} ValueStringFormat={}{0:Y} /› такъв код работи само за DatePicker, но имам нужда само от две колони на DatePickerPage. - person CatCap; 12.09.2013
comment
хм, мисля, че не можете да премахнете колона с инструментариум, но можете да видите тази връзка geekchamp.com/articles/. - person MatDev8; 12.09.2013

Това трябва да помогне да се форматира съдържанието на DateTimeButton, за да се показват само месец и година: <toolkit:DatePicker x:Name="datePicker" ValueStringFormat="{}{0:y}"/>

person user2959478    schedule 06.11.2013

Форматът се показва в зависимост от местоположението, но това може да се избегне, като напишете това:

<toolkit:DatePicker 
                    Value="{Binding DateCard, Mode=TwoWay}" 
                    ValueStringFormat="{}{0:MM'/'yy}" />

И ще бъдете щастливи! (дд'/'ММ'/'гггг)

person Denis Prohorchik    schedule 11.08.2015