2012-05-23 3 views
0

По какой-то причине использование Content="{Binding Time, StringFormat=t} по-прежнему дает мне длинную дату. Поле подложки является DateTime свойство не инициализируется DateTime.Now, но независимо от того, какой формат строки я стараюсь это все еще показывает полную дату ...Binding StringFormat дает неверный результат

Я хотел бы только, чтобы увидеть HH: мм тт

Любые идеи?

XAML:

<Window x:Class="ArgosSystem.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:loc="clr-namespace:ArgosSystem" 
     xmlns:sys="clr-namespace:System;assembly=System" 
     Title="MainWindow" Height="800" Width="1280" Loaded="Window_Loaded"> 
    <Window.Resources> 
     <DataTemplate DataType="{x:Type loc:Picknote}"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="200" MinWidth="200" /> 
        <ColumnDefinition Width="350" /> 
        <ColumnDefinition Width="250" /> 
        <ColumnDefinition Width="50" /> 
       </Grid.ColumnDefinitions> 
       <Label Content="{Binding Time, StringFormat=t}" VerticalContentAlignment="Center" Foreground="IndianRed" FontSize="36" Grid.Column="0" /> 
       <Label Content="{Binding Customer}" VerticalContentAlignment="Center" Foreground="IndianRed" FontSize="36" Grid.Column="1" /> 
       <Label Content="{Binding PicknoteNo}" VerticalContentAlignment="Center" Foreground="IndianRed" FontSize="36" Grid.Column="2" /> 
       <Label Content="{Binding Qty}" VerticalContentAlignment="Center" Foreground="IndianRed" FontSize="36" Grid.Column="3" /> 
      </Grid> 
     </DataTemplate> 
    </Window.Resources> 
    <Grid Background="Black"> 
     <DockPanel> 
      <ScrollViewer Name="lstPicknoteScroll" VerticalScrollBarVisibility="Auto"> 
       <ItemsControl Name="lstPicknotes" ItemsSource="{Binding}" IsTabStop="False" Foreground="Cornsilk" /> 
      </ScrollViewer> 
     </DockPanel> 
    </Grid> 
</Window> 

C#:

public partial class MainWindow : Window 
{ 
    ObservableCollection<Picknote> picknotes = new ObservableCollection<Picknote>(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
     lstPicknotes.DataContext = picknotes; 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     picknotes.Add(new Picknote 
     { 
      Time = DateTime.Now, 
      Customer = "REED FOR SPEED", 
      PicknoteNo = "PKN767677", 
      Qty = 100 
     }); 

     picknotes.Add(new Picknote 
     { 
      Time = DateTime.Now.AddHours(-2), 
      Customer = "F1 AUTOMOTIVE", 
      PicknoteNo = "PKN767677", 
      Qty = 50 
     }); 
     picknotes.Add(new Picknote 
     { 
      Time = DateTime.Now.AddHours(-1), 
      Customer = "FERGUSENS", 
      PicknoteNo = "PKN767677", 
      Qty = 10 
     }); 
    } 
} 

ответ

4

StringFormat работы по свойствам типа строки. Свойство Content имеет тип Object, поэтому вам нужно указать формат, используя ContentStringFormat свойство управления меткой.

<Label Content="{Binding Time}" ContentStringFormat="t" VerticalContentAlignment="Center" Foreground="IndianRed" FontSize="36" Grid.Column="0" /> 
+0

Perfect thankyou! – sprocket12