จะใส่อักขระ Unicode ใน XAML ได้อย่างไร?


104

ฉันกำลังพยายามทำสิ่งนี้:

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

เพื่อให้ได้ - มาปรากฏหน้าข้อความ มันใช้ไม่ได้ ฉันควรทำอะไรที่นี่?

คำตอบ:


196

เนื่องจาก XAML เป็นรูปแบบไฟล์ XML คุณสามารถลองใช้อักขระ XML Escape ดังนั้นแทนที่จะเขียน&\u2014คุณสามารถเขียน&#x2014;แทนได้


ขอบคุณ. ฉันพยายาม & mdash; และ \ u2014 แต่ไม่ใช่อย่างนั้น มันได้ผล
Alex Baranosky

4
คุณอยู่ใกล้ใน hexa & # x20ac; และในยูนิโคดทศนิยม & # 8364; คุณจะได้รับและยูโร :)
user347594

ใช่ แต่ถ้าคุณต้องการอักขระ UTF-32 เช่นโน้ตดนตรีในแบบอักษร Symbola ที่อยู่เหนือ 0x10000 ล่ะ?
Ruud van Gaal

ขอบคุณสำหรับคำแนะนำ อย่างไรก็ตามสิ่งนี้ใช้ได้ผลสำหรับฉันเมื่อฉันใส่อักขระ Unicode ลงใน Text = "... " โดยตรง เมื่อใช้ Binding กับ ViewModel ของฉันฉันต้องใช้ตัวแปรสตริงที่มี "\ u2014"
flocbit

9

ใน xaml ฉันทำแบบนี้:

    <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>

หวังว่าจะเป็นประโยชน์!


3

จากเอกสารของ Microsoft :

ไฟล์มาร์กอัปที่สร้างขึ้นใน Microsoft Visual Studio จะถูกบันทึกโดยอัตโนมัติในรูปแบบไฟล์ Unicode UTF-8 ซึ่งหมายความว่าอักขระพิเศษส่วนใหญ่เช่นเครื่องหมายเน้นเสียงจะได้รับการเข้ารหัสอย่างถูกต้อง อย่างไรก็ตามมีชุดอักขระพิเศษที่ใช้กันทั่วไปซึ่งได้รับการจัดการที่แตกต่างกัน อักขระพิเศษเหล่านี้เป็นไปตามมาตรฐาน XML ของ World Wide Web Consortium (W3C) สำหรับการเข้ารหัส

สิ่งนี้หมายความว่าคุณสามารถทำ zalgo สำหรับทุกสิ่งที่คุณสนใจ

ป้อนคำอธิบายภาพที่นี่

บิตของโค้ดที่เกี่ยวข้อง:

<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

ฉันมาที่หน้านี้ด้วยเหตุผลอื่น แต่นี่ไม่รวมวิธีแก้ปัญหาที่ง่ายที่สุดและชัดเจน

นี่คือสิ่งที่ฉันทำ

รักษาคลาสแบบคงที่ด้วยค่า Unicode ทั้งหมด

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

จากนั้นก็ผูกไว้ทุกที่ที่คุณต้องการ

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

นอกจากนี้ยังช่วยคุณในการบำรุงรักษาไอคอนทั้งหมดจะรวมอยู่ในที่เดียวเพื่อจัดการ


1

บันทึกไฟล์เป็น UTF-8 ใน Visual Studio คุณสามารถทำได้โดยไปที่ "File" → "Advanced Save Options"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.