با سلام
چطور میشه یه برنامه سیلورلایت رو طوری تنظیم کرد که اعداد رو به صورت فارسی نمایش بده>
با سلام
چطور میشه یه برنامه سیلورلایت رو طوری تنظیم کرد که اعداد رو به صورت فارسی نمایش بده>
سلام به همه
اگه منظورتون اینه که یه تنظیمی خاصی باشه با استفاده از اون بشه نشون داد میشه گفت نمیشه!
اما در عمل شدنیه چرا که سیلورلایت کامل تمام یونیکدها ساپورت میکنه. لذا کافیه که یه انتقال یک به یک کارکترهای مورد نظرتون به یونیکد مورد نظر انجام بشه
اما حتما یادتون باشه که یه فونت متناسب مثل تاهوما یا اریال استفاده کنین.
آخرین ویرایش به وسیله taghvajou : جمعه 03 شهریور 1391 در 18:27 عصر دلیل: سلامش یادم رفته بود
سلام
شما میتونید کلاس به شکل زیر ایجاد کیند
public static class Numbers
{
/// <summary>
/// Converts English digits of a given string to their equivalent Persian digits.
/// </summary>
/// <param name="data">English number</param>
/// <returns></returns>
public static string ToPersianNumbers(this string data)
{
if (string.IsNullOrWhiteSpace(data)) return string.Empty;
return
data.Replace("0", "۰")
.Replace("1", "۱")
.Replace("2", "۲")
.Replace("3", "۳")
.Replace("4", "۴")
.Replace("5", "۵")
.Replace("6", "۶")
.Replace("7", "۷")
.Replace("8", "۸")
.Replace("9", "۹");
}
/// <summary>
/// Converts Persian digits of a given string to their equivalent English digits.
/// </summary>
/// <param name="data">Persian number</param>
/// <returns></returns>
public static string ToEnglishNumbers(this string data)
{
if (string.IsNullOrWhiteSpace(data)) return string.Empty;
return
data.Replace("۰", "0")
.Replace("۱", "1")
.Replace("۲", "2")
.Replace("۳", "3")
.Replace("۴", "4")
.Replace("۵", "5")
.Replace("۶", "6")
.Replace("۷", "7")
.Replace("۸", "8")
.Replace("۹", "9");
}
سپس یک کلاس کانورتور به شکل زیر ایجاد کیند
public class ToPersianNumberConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value == null ? value : value.ToString().ToPersianNumbers();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value == null ? value : value.ToString().ToEnglishNumbers();
}
}
حالا میتونید در هنگام Bind کردن TextBox و TextBlock هاتون از این کانورتور استفاده کنید یا در کد نویسی از ToString().ToPersianNumbers استفاده کنید
با سلام و تشكر از راهنماييهاتون
من فعلا ترجيح دادم از Converter استفاده نكنم
چون تغييرات زيادي اعمال مي كنه و يه جاهايي با يه سري Converter هاي ديگه تداخل پيدا مي كنه
توي همين سايت يه فونت tahoma پيدا كردم كه اعدادش فارسي شده بود
فعلا دارم از اون به صورت Embed استفاده مي كنم و مشكلي ندارم
البته حجم فونت زياده (حدود 300K) ولي خوب روي Lan مشكلي نداره
شما میتونید بدون هیچ مشکلی اون تداخل رو رفع کنید مثلا یک کانورتور دارید که اگر گزینه True در فیلد دیتابیس باشه باید این عبارت رو بر گردونه " برای 12 بار استفاده شده" و ما میخوایم اعداد فارسی باشه میتونید به این شکل بنویسید
public class TrueToNumber : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
if ( value == true)
{
string text = "برای 12 بار استفاده شده";
return text.ToPersianNumbers();
}
else
{
return "";
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value'
}
}
یا یک CoustomControl برای TextBlock و TextBox درست کنید که متد Tostring اون رو به شکل زیر ویرایش کنید
public override string ToString()
{
return base.ToString().ToPersianNumbers();
}
سلام - منم از فونت Tahoma توی برنامه WPF استفاده میکنم. وقتی از کد زیر در ابتدای اجرای برنامه استفاده میکنم اعداد رو هم به صورت فارسی نشون میده:
داخل App :
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fa-IR");
ولی اعداد رو خیلی خوب نشون نمیده. مثلاً 2 و 3 خیلی شبیه به هم هستن و ناخوانا. میخواستم ببینم میشه با ابزاری این فونت Tahoma رو دست کاری کرد تا اعداد رو هم درست نشون بده؟
سلام به همه
شما میتونین فونتی که فکر میکنین نوشته ها رو خوانا تر نشون میده رو خودتون امبد کنین و ازش استفاده کنین که نحوی این کار رو تو این پست من قبل خدمتتون عرض کردم.