01/10/2018, 11:18

Không dùng được DateTime trong WPF

Em có dòng code WPF XAML thế này (phần behind-code em để code mặc định):

[code]
<Window.Background>




</Window.Background>
<Window.Resources>

    </Window.Resources>
    <StackPanel Margin="10">
        <TextBlock Text="{Binding Source={x:Static system:DateTime.Now}, ConverterCulture='de-DE', StringFormat=German date: {0:D}}" />
        <TextBlock Text="{Binding Source={x:Static system:DateTime.Now}, ConverterCulture='en-US', StringFormat=American date: {0:D}}" />
        <TextBlock Text="{Binding Source={x:Static system:DateTime.Now}, ConverterCulture='ja-JP', StringFormat=Japanese date: {0:D}}" />
    </StackPanel>
</Window>[/code]

Em không hiểu sao mà nó cứ dính lỗi: WPF không hỗ trợ DateTime (DateTime is not supported in a Windows Presentation Foundation (WPF) project)
Mấy bác có thể giải đáp giúp em với ạ. Em cảm ơn.

Văn Dương viết 13:26 ngày 01/10/2018

Trên khai báo xmnls: sys sao dưới lại gọi system.
Hơn nữa cái system cũng chưa khai báo ở đâu cả.

Cách 1: Xác định DataContext của Window là sys.DateTime và binding đến Now.

<Window
    .....
    xmlns: sys="clr-namespace:System;assembly=mscorlib"
    .....
    >
    <Window.DataContext>
          <sys.DataTime/>
     </Window.DataContext>
     <Grid>
           <TextBlock Text="{Binding Now}"/>
      </Grid>
</Window>

Cách 2: Xác định một resource tương ứng với System.DateTime trong khu vực Resource của Window và binding đến Now qua x:StaticResource.

<Window
    ......
    xmnls: sys=...(nhu tren)
    .....
    <Window.Resource> 
        <sys.DateTime x:Key="SystemDateTime"/>
    </Window.Resource>
    <Grid>
          <TextBlock Text="{Binding Source={StaticResource SystemDateTime.Now}"/>
    </Grid>
</Window>
Trần Linh viết 13:23 ngày 01/10/2018

Em cảm ơn bác! Em kiến thức đang còn sơ sài quá.

Bài liên quan
0