2016-05-12 24 views
5

tôi có trong XAML:văn hóa Tooltip là sai

<TextBlock Text="{local:Bind Test}" ToolTip="{local:Bind Test}" /> 

Và đây là ảnh chụp màn hình (sử dụng kính lúp):

Câu hỏi của tôi là những gì đang xảy ra ở đây? Tại sao chú giải công cụ hiển thị giá trị khác nhau (dấu thập phân là . trong khi , được mong đợi)?


câu chuyện dài:

Tôi cố gắng để hiển thị số điện thoại trong cùng một định dạng như trong sử dụng ưu đãi về định dạng số Windows.

Đối với điều này tôi đã ghi đè lên các ngôn ngữ trước khi hiển thị cửa sổ (trọng App.OnStartup):

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), 
    new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 

Và sử dụng sau ràng buộc tùy chỉnh (để thiết lập văn hóa chuyển đổi theo mặc định)

public class Bind : Binding 
{ 
    public Bind(string path) : base(path) 
    { 
     ConverterCulture = CultureInfo.CurrentCulture; 
    } 
} 

Nó hoạt động cho Text thuộc tính của TextBox, nhưng nó không hoạt động cho ToolTip.

Để thực sự thấy những gì tôi thể hiện trên ảnh chụp màn hình:

  • đi (Windows 7) Control Panel/Region and Language/Formats và thiết lập Format như English (United States)
  • đi Additional settings/Numbers và thay đổi Decimal symbol.-,
  • tạo ra ứng dụng WPF mới, sao chép xaml, thêm ghi đè ngôn ngữ, thêm công cụ chuyển đổi và đặt:

public partial class MainWindow : Window 
{ 
    public double Test { get; set; } = 1.234567; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
    } 
} 

Trả lời

4

Tôi cũng đang gặp phải vấn đề tương tự. Vì vậy, bạn có thể giải quyết điều này bằng cách thêm TextBlock bên trong ToolTip và liên kết cùng một Text="{local:Bind Test}" cho TextBlock của ToolTip này cũng.

<TextBlock> 
    <TextBlock.ToolTip> 
     <TextBlock Text="{local:Bind Test}"/> 
    </TextBlock.ToolTip> 
</TextBlock> 
+0

Kết quả tương tự. Tôi không thay đổi 'CurrentCulture' hoặc' CurrentUICulture' (cả hai đều có ', 'làm dấu thập phân số). Vấn đề là tại sao 'ToolTip' không sử dụng nó. Tôi có thể thay đổi nó để có một số * phân tách * kỳ lạ, như 'CultureInfo.DefaultThreadCurrentCulture = new CultureInfo (" ru-Ru ") {NumberFormat = new NumberFormatInfo() {NumberDecimalSeparator =" + "}};' (ngôn ngữ ghi đè trước), hoạt động cho 'Văn bản' không có vấn đề, nhưng bị bỏ qua bởi' ToolTip'. – Sinatr

+0

@Sinatr Vâng, tôi cũng phải đối mặt với cùng một vấn đề. vì vậy bạn có thể giải quyết điều này bằng cách thêm TextBlock bên trong tooltip và liên kết cùng một Text = "{local: Bind Test}" cho TextBlock của ToolTip này. Smirti

+0

Ý tưởng tuyệt vời (đặt 'TextBlock' bên' TextBlock.ToolTip'), thêm câu trả lời này vào câu trả lời và tôi sẽ chấp nhận nó. – Sinatr