Làm thế nào để đặt một ký tự unicode trong XAML?


104

Tôi đang cố gắng làm điều này:

<TextBlock Text="{Binding Path=Text, 
                          Converter={StaticResource stringFormatConverter}, 
                          ConverterParameter='&\u2014{0}'}" />

Để có dấu - xuất hiện phía trước văn bản. Nó không hoạt động. Tôi nên làm gì ở đây?

Câu trả lời:


196

Vì XAML là định dạng tệp XML nên bạn có thể thử thoát ký tự XML. Vì vậy, thay vì viết &\u2014, bạn có thể viết &#x2014;.


cảm ơn bạn. Tôi đã thử & mdash; và \ u2014, nhưng không phải vậy. Nó đã làm việc.
Alex Baranosky, 02/09/09

4
Bạn đã kết thúc, trong hexa & # x20ac; và ở dạng đơn nguyên thập phân & # 8364; bạn sẽ nhận được và Euro :)
dùng347594

Có, nhưng nếu bạn muốn một ký tự UTF-32, chẳng hạn như các nốt nhạc trong phông chữ Symbola cao hơn 0x10000 thì sao?
Ruud van Gaal

Cảm ơn cho gợi ý. Tuy nhiên, điều này chỉ hiệu quả với tôi khi tôi đặt ký tự unicode của mình trực tiếp bên trong Text = "...". Khi sử dụng Binding với ViewModel, tôi phải sử dụng biến chuỗi có chứa "\ u2014".
flocbit

9

Trong xaml, tôi đã làm như thế này:

    <Button Grid.Column="1" Grid.RowSpan="2" Name="start" Margin="5" Click="start_Click">
        <TextBlock Name="test" FontFamily="pack://application:,,,/Y_Yoga;Component/Resources/#FontAwesome">&#xF04B;</TextBlock>
    </Button>

Hi vọng sẽ hữu ích!


3

Từ tài liệu của Microsoft :

Các tệp đánh dấu được tạo trong Microsoft Visual Studio được tự động lưu ở định dạng tệp Unicode UTF-8, có nghĩa là hầu hết các ký tự đặc biệt, chẳng hạn như dấu trọng âm, được mã hóa chính xác. Tuy nhiên, có một tập hợp các ký tự đặc biệt thường được sử dụng được xử lý theo cách khác. Các ký tự đặc biệt này tuân theo tiêu chuẩn XML của Tổ chức World Wide Web Consortium (W3C) để mã hóa.

Điều này có nghĩa là bạn có thể làm zalgo cho tất cả những gì bạn quan tâm

nhập mô tả hình ảnh ở đây

Bit mã có liên quan:

<Label Grid.Column="0" Grid.Row="3" FontWeight="ExtraBlack">STAGE:M&#x363;&#x36d;&#x363;&#x33e;  V&#x363;&#x365;&#x36d;&#x35b;&#x364;&#x36e;&#x365;&#x368;&#x365;&#x367;&#x33e;</Label>

3

Tôi đến trang này vì một số lý do khác, nhưng điều này không bao gồm giải pháp dễ dàng và rõ ràng.

Đây là những gì tôi làm.

Duy trì một lớp tĩnh với tất cả các giá trị Unicode.

 public static class Icons
{
    public const string IconName = "\u2014";
}

Và sau đó chỉ cần ràng buộc nó bất cứ nơi nào bạn cần.

<TextBlock Text="{x:Static resources:Icons.IconName}" FontFamily="..."/>

Điều này cũng giúp bạn bảo trì, tất cả các biểu tượng sẽ ở một nơi để quản lý.


1

Lưu tệp dưới dạng UTF-8. Trong Visual Studio, bạn có thể thực hiện việc này bằng cách đi tới "Tệp" → "Tùy chọn Lưu Nâng cao".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.