Преобразование секунд в минуты: секунды - PullRequest
3 голосов
/ 22 августа 2011

Я пытаюсь связать свойство Text TextBlock путем преобразования общего количества секунд, т.е.

1004, в минуты: секунды, и я могу успешно извлечь свои секунды из XML, но я не знаю, как работатьс помощью геттеров и сеттеров, чтобы я мог конвертировать мои секунды в минуты: секунды

Я посмотрел на TimeSpan и знаю, что он может делать то, что я спрашиваю, но я не знаю, как написать метод получения и установки такпреобразует целочисленные значения (секунды) в формат Minute: Seconds.

Это то, что я имею в своем классе

public class Stats 
{
 public TimeSpan Time {get;set;}
}

любая помощь будет принята с благодарностью,

спасибо

Джон

Ответы [ 3 ]

4 голосов
/ 22 августа 2011

Чтобы сделать это как свойство, вы можете сделать:

public class Stats {
   public TimeSpan Time { get; set; }
   public string TimeFormated { get { return Time.TotalMinutes + ":" + Time.Seconds; } }
}

Хотя вы действительно должны делать это в своем XAML, поскольку то, что вы делаете, это макет:

<StackPanel Orientation="Horizontal">
  <TextBlock Text={Binding Time.TotalMinutes}" />
  <TextBlock Text=":" />
  <TextBlock Text=={Binding Time.Seconds}" />
</StackPanel>
2 голосов
/ 27 августа 2011

Используйте конвертер.

XAML:

<phone:PhoneApplicationPage.Resources>
    <classes:TimeSpanConverter x:Key="c" />
</phone:PhoneApplicationPage.Resources>
...
<TextBlock Text="{Binding Time, Converter={StaticResource c}}" />

C #:

public class TimeSpanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var time = (TimeSpan) value;
        return time.TotalMinutes + ":" + time.Seconds;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}
1 голос
/ 12 февраля 2012

Вместо этого рекомендую этот конвертер (поскольку два предыдущих ответа дадут вам 2: 1, когда вы действительно хотите 2:01 -

public class FriendlyTimeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        TimeSpan ts = TimeSpan.FromSeconds((int)value);
        return String.Format("{0}:{1:D2}", ts.Minutes, ts.Seconds);                
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

}

Обратите внимание: спецификатор D2 для строк формата .

И чтобы использовать его, вы указываете его одновременно с привязкой:

<phone:PhoneApplicationPage.Resources>
    <util:FriendlyTimeConverter x:Key="FriendlyTimeConverter"/>
</phone:PhoneApplicationPage.Resources>

...

<TextBlock Text="{Binding timeRemaining, Converter={StaticResource FriendlyTimeConverter}}" Name="TimerDisplay" Grid.Column="4" HorizontalAlignment="Right" Margin="12,0" Style="{StaticResource PhoneTextTitle2Style}"></TextBlock>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...