2015-06-09 12 views
7

Tôi có một khối văn bản hiển thị ngày/giờ. Giao diện của đồng hồ có thể khác nhau trên một số điều khiển trong ứng dụng, theo màu và có thể là phông chữ, nhưng tôi muốn ngày và giờ có cùng định dạng.Làm cách nào để tôi có thể sử dụng tài nguyên tĩnh cho StringFormat trên một TextBlock?

Tôi biết tôi có thể thiết lập thuộc tính StringFormat như vậy:

<TextBlock Text="{Binding CurrentDateTime, StringFormat='{}{0:h\:mm tt}'}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" /> 

Tuy nhiên, tôi không biết làm thế nào để kéo định dạng chuỗi ra thành một cuốn từ điển tài nguyên chuỗi riêng biệt. Tôi đã cố gắng làm một cái gì đó như sau, nhưng chuỗi thời gian ngày không xuất hiện ở tất cả.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:system="clr-namespace:System;assembly=mscorlib"> 
    <system:String x:Key="MyFormat">{}{0:h\:mm tt}</system:String> 
</ResourceDictionary> 

<!-- In another file --> 
<TextBlock Text="{Binding CurrentDateTime, StringFormat={StaticResource MyFormat}}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" /> 

Điều này có thể được thực hiện không? Nếu vậy, làm thế nào?

Cảm ơn

Trả lời

12

Có vẻ bạn chỉ cần loại bỏ các {}:

<system:String x:Key="MyFormat">{0:h\:mm tt}</system:String> 

Các {} là cần thiết cho giá trị thuộc tính để ngăn chặn chúng khỏi bị hiểu là một phần mở rộng đánh dấu. Tuy nhiên, với cú pháp phần tử thuộc tính, bạn không còn cần {} vì các dấu ngoặc nhọn không có ý nghĩa đặc biệt trong ngữ cảnh đó.

+0

Câu hỏi hay, câu trả lời hay, không bao giờ biết cách thực hiện việc này. – Contango

+0

Cảm ơn, nó đã hoạt động. Tôi ngạc nhiên rằng tôi không thể tìm thấy câu hỏi về điều này trên SO. Có lẽ tôi đã bỏ lỡ nó. –

Các vấn đề liên quan