تقویم شمسی در Xamarin Forms
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: یک دقیقه

BitDatePicker یک Date Picker، برای استفاده در برنامه‌هایی مبتنی بر زمارین فرم (Android - iOS - UWP) است.

مهم‌ترین ویژگی ها:
  • پشتیبانی از تمامی Calendar System هایی که noda time ساپورت می‌کند؛ اعم از شمسی، قمری، میلادی و ...
  • پشتیبانی از تمامی Locale هایی که NET. پشتیبانی می‌کند؛ اعم از فارسی، عربی، انگلیسی و ...
  • قابلیت ارائه Template سفارشی شده برای UI
  • سازگار شده با MVVM
بر روی گیت هاب یک نمونه کد که در آن از کنترل BitDatePicker استفاده شده، قرار داده‌ایم. در ادامه  توضیح مختصری را از نحوه‌ی استفاده‌ی از آن داریم.

چگونه BitDatePicker را در پروژه‌ی خود داشته باشیم؟
  • دریافت و نصب پکیج Bit.CSharpClient.Controls از nuget.
  • اضافه کردن کدهای زیر در کلاس AppDelegate پروژه‌ی iOS و کلاس Main Activity در Android و کلاس App پروژه‌ی UWP قبل از Forms.Init .
BitCSharpClientControls.Init();

چگونگی استفاده از BitDatePicker در فرم Xaml: 
  • اضافه کردن namepsace های زیر در فرم Xaml:

  • xmlns:bitControls="clr-namespace:Bit.CSharpClient.Controls;assembly=Bit.CSharpClient.Controls"
    xmlns:noda="clr-namespace:NodaTime;assembly=NodaTime"

    مثال تقویم شمسی:
<bitControls:BitDatePicker
    Text="لطفا یک روز را انتخاب کنید" 
    Culture="Fa"
    DateDisplayFormat="dd MMM yyyy"
    CalendarSystem="{x:Static noda:CalendarSystem.PersianArithmetic}"
    FlowDirection="RightToLeft" 
    SelectedDate =" {Binding SelectedDate}"/>

برای داشتن تقویم شمسی  با اعداد فارسی تنها کافی است از یک Font که همیشه اعداد فارسی را در خود دارد مثل Vazir-FD-WOL، استفاده کنیم. فونتی سبک، سورس باز و زیبا! (FD مخفف Farsi Digit و WOL مخفف Without Latin است)

برای درک بهتر از نحوه‌ی استفاده‌ی از این Date Picker، نگاهی به Sample های آن بیاندازید. همچنین می‌توانید در همینجا نیز سؤالات خود را بپرسید؛ یا این که در Stackoverflow.com سوال ایجاد کنید و یا در GitHub یک Issue را ثبت کنید.

  • #
    ‫۵ سال و ۹ ماه قبل، جمعه ۹ آذر ۱۳۹۷، ساعت ۱۸:۱۶
    سلام چطور میتونیم داخل wpf استفاده کنیم؟ ایا سورس بخش تقویم موجود هست تا بشه برای wpf پورتش کرد؟
    • #
      ‫۵ سال و ۹ ماه قبل، شنبه ۱۰ آذر ۱۳۹۷، ساعت ۱۱:۵۸
      این کار هم مثل تمامی کارهای دیگه مون سورس باز هست. توی این پروژه از Rg Plugins Popup استفاده شده که فعلا محدود به Android/iOS/Windows هست، وگرنه خود کد ما می‌تونست روی هر پلتفرم ای که Xamarin Forms پشتیبانی می‌کنه (از جمله wpf) کار کنه.
  • #
    ‫۵ سال و ۸ ماه قبل، شنبه ۱ دی ۱۳۹۷، ساعت ۰۲:۴۰
    سلام؛ زمانیکه استفاده می‌کنیم در Xamarin 3.4 با error زیر مواجه میشیم:
    Nan is not valid value for width
  • #
    ‫۵ سال قبل، چهارشنبه ۳۰ مرداد ۱۳۹۸، ساعت ۱۴:۵۸
    این نسخه جدید چرا موقع اجرا خطا میده؟
    Type BitDateTimePicker not found in xmlns https://bit-framework.com  
    یا این یکی :
    Position 32:53. Expected Setter but found Xamarin.Forms.Button. 
    من کل پروژه رو از گیت دانلود و اجرا کردم. اونم خطا میده
    Visual Studio 2019 - Windows 10 x64 Ent
     
    • #
      ‫۵ سال قبل، چهارشنبه ۳۰ مرداد ۱۳۹۸، ساعت ۱۷:۲۵
      به نظر یکسری از name spaceها رو تغییر نام دادند. در متن هست Bit.CSharpClient.Controls که شده Bit.View.Controls 
      • #
        ‫۵ سال قبل، چهارشنبه ۳۰ مرداد ۱۳۹۸، ساعت ۱۷:۴۸
        اون که بله. اما حالا یک مشکل دیگه دارم. اون خطای اول موقعی اتفاق میفته که برای کنترل بخوام یک نام ست کنم ("x:Name="DatePicker1). اگه نام نگذارم نمیتونم در کد به کنترل دسترسی داشته باشم.
        • #
          ‫۵ سال قبل، چهارشنبه ۳۰ مرداد ۱۳۹۸، ساعت ۱۷:۵۳
          بهترین محل برای طرح این نوع مشکلات در issue tracker آن‌ها است. چون ممکن است نویسندگان اصلی آن، نظرات شما را در اینجا مطالعه نکنند. در Github هم خواستید راست به چپ بنویسید، یک <"div dir="rtl> اولش بنویسید با یک سطر فاصله و هر جائی هم که خواستید چپ به راست باشه اون rtl رو ltr کنید.
  • #
    ‫۳ سال و ۱۱ ماه قبل، شنبه ۱۹ مهر ۱۳۹۹، ساعت ۰۱:۲۸
    سلام
    چطوری میشه شبیه یک input کردش؟
  • #
    ‫۳ سال و ۱۱ ماه قبل، شنبه ۱۹ مهر ۱۳۹۹، ساعت ۰۱:۲۹
    سلام
    چطوری میشه بعد از بسته شدن بشود رویدادش را گرفت و عملیات دیگری پشتش انجام داد