From e949fc55cd1d71f07549c4af14bbefaa1fa59b1c Mon Sep 17 00:00:00 2001 From: denglihong2007 <98096191+denglihong2007@users.noreply.github.com> Date: Sat, 31 May 2025 23:21:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20#123=20=E6=B7=BB=E5=8A=A0=E5=8C=97?= =?UTF-8?q?=E4=BA=AC=E5=8D=97=E7=AB=99=E7=AB=99=E5=8F=B0=E4=B8=BB=E8=A6=81?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BeijingNan/PrimaryPlatformScreen.png | Bin 0 -> 13229 bytes .../CRSim.ScreenSimulator.csproj | 3 + .../Converters/ChineseToPinyinConverter.cs | 53 ++++++++++++++ .../Models/StylesInfoData.json | 12 ++++ .../PrimaryPlatformScreenViewModel.cs | 12 ++++ .../BeijingNan/PrimaryPlatformScreenView.xaml | 65 ++++++++++++++++++ .../PrimaryPlatformScreenView.xaml.cs | 15 ++++ 7 files changed, 160 insertions(+) create mode 100644 CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryPlatformScreen.png create mode 100644 CRSim.ScreenSimulator/Converters/ChineseToPinyinConverter.cs create mode 100644 CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryPlatformScreenViewModel.cs create mode 100644 CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml create mode 100644 CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml.cs diff --git a/CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryPlatformScreen.png b/CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryPlatformScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9fb415d34cf8a981aaebb4a655a11f2b39e251 GIT binary patch literal 13229 zcmd6OvvSsWX7XrlZ4*8~a3AR~@7 zL`H~~7!rttkU*vrj2djLiCbUgg$cqk5GGKD4Dq@>bk00yWbmB1ck>A3eeb&Qdt_GB zYH=?+?9jViEkl31jz}vRh;57nAj9g1fZtG$_M);OA|lWLvQeRLD2+kz5lq=x@;{s2 zb>3g_i(&8)8vxJJ4C%j%*>C^%W>=IfeZ(6E6Tm4{9{)kE9B5Kb%HYK%;;wcU%S%}1w#kW>AE}?fuTFH+ozCm0h zl>*{wn=W8C2mJSo_8P+qvQ3+9``R>s?g$qY$=qx#X;h4XvIa@%58rGFbrj!)?V3@{ z9aK=MgtvGCq@^WW_Nre?=>`fr?7CIU(S``X71H*Q)KqD>gOdLokYX#d9%@J+d*&6E zB#Muy5^pfc71Ezr?<@3e-a`Dpq4a3jqJGr zBY&^)+qt;kQ{t$}TN9}7A=(m+p2tH~zmtL+B4hg~hcx4}VUP{S-*?~O*^4M`M-EwiB4)Ltl=|qAby(}SkKG?~5!oUnsM0V1Q5j1L%Ctm! zBF~-W5M*KPt9a6Hh>nB}Qn@bnHBQuml9DN!C<4A5&#S2fEtzgXP`x4SpQ-U)3Gn_4 zn|pY4D@F6+*UX$@@N@&N@AXSs`WFuszsTMb6g0%TRF!qN&5dOysI=^b_ZO(AWP~Ta z&eTM&34#D#O$(b6h~q3a=2iwoJV{hgI?y>nBpELskw@vX{$(hpQk&37TUpkhuk38-I)QaHppTw&7 z9VLK)hk?G27^4@W^5OI50ttq*%@s{VtRVLHVtm+vTkl56u_F(ojkPu5qT$?<9sB5~ zLik?=kdO~pl(<60*wvegKaAX)S5bvus(e{!VBkwuC%|z93-XAHb*S`W04CZ zXeA|8MqK)u#qxgK|L!NR)jR5pwx1bKwaGb1{b(ja>LF(-|AZaZW-`kbY{j9!w5xjk zX&H}M(UGQ!(QW`WzXuIRi0raGx?D-^jP^ zUEG)sv6Z`iR}h(T7~5`9VdM!C^}E2^5n1Kkg(y0war)^1@Ao+xE&86_9k|?S7~5?t z+WOkaT(fLMgW{VG5EMiUR8tKb6vf+?{lEE?j_xdxQTS4OYfOw_;xHXDULi{59Mp7j zD4L8W=M}{7Xh?o31)!vizwpJsd1>7ZVL|boARTL8`fpru?_+AW^B6AZ!$&`dOl-Eu zK*C-&)kaoglvd}tVso+~)3vz_&C<5+y;Pfhy-9EC)#bLV{OnnqQk0P~j5FUl8oW&w-C)sOiFi zXfP!0tQ2ficcgSSQ9l%?S3(3J+*kUW=z0#syx2ED$&#@*r$Us*|Md}|v9qQm*)+Uq zpxzMvdbUK8C;J5fBQlK+qeA%L0rCXjw!A_E(cr%11N(FcgOsHL(I}@a-`wV4vjxFh z!2e2C9<}4*lxY6=J(EEL+F8d<=}#-x6J7Gv<7e;~D@e#2fq}se!956#lI*U9jZ#?% zRX&{$>zjKE8W;?AYSq8HtUqHnIj>;o^}V~VkBE)L2^bq19SB+JC%^LCxz+f44WAW2 zH!BSr6$i<1p%a~uuv9by79N}Lvp1p95H2x7vpHPOiXxz|sjUrV`GzTF=n!;3>UQeQ zhypl>nx6-CAjz?&SR$F7Y~Iz{xj6{QyO!t0qjz>cJn9gv(l=vtZ><^A3}U91xa-PaX8m&TCyOViY2_;2qJ61( zRZc;1aPYyi_(K>Q5rJB3Ub}RF9W+eOG5M^G@Z5Df@Vx){OT0VyGFAL7g|6L{s;aYy z8LpKx6YHOWF>c~8Dw+`d_`f?ig|$U3$^^#4Jc0`hhETpkCu0>b>H9@HP-;38Dr7RQ z30;10L=xE#(T1(@;j!mCA$@873C!cGCIQ}h?n+qu)~2(P9e;jr@9!m`9QxITqE4j4 z$Za3(dQgkFI3#qV{*r@q4R#8b&0+eac77)i4tGbozn{#_tjNBg6i zy#F@Z1e-Mpfxa7yg`!Sur_jkjDoONsordeh(vqWpF#Q&R7LL=(=eUihSLrIpG`#Rl?ayo$4Rf!JDSsX{CTKyH2^5|JXlo zI%XBSx#H+or*Nq z?mge);B0NU@zwhORjkmdU5Qth2Qj2qMa1?LQkCDKCwZ`QvA#2sTZ;1$z=&)jc&%Sz z=j5r63KKSS)=_V;xPR|_0g8`j!lx*`*>cCP$eWlNbn`dEg*Q7fdF^x>uyVpqX^e28 z@HMz+p{XM;R}q6Hb;=~{>$S$nc(a>V zx0R%7jD`X8Z^smKVMycQ=a~5;J+`1Ar-%oUI;gC}VPY68SI-o+x|VAECmcYWl8!hj zPA6cb3Tc$sWj>n0&51rBt9jm`b=HlxaN^5K!SAkcA9pzR7yKCYj+zIU2Uce zA{;`q0csr)fk6+x-yV=A#jL{*L9qslCU^VU5s{JjqVZY<6%8Mek^A5qlfxC=r-zX< zD_5BL-N`!k^4bBo`jyH4i21X5AiZ>_=-{w+qGag2W00;etbJu(5y=eLT-LfzCzsh+|i?IOhd3KcR3{^DJNe*uNOxB3t#1#jBM$sK5`diV&Mri|n9GsP-Uxi9RINvu*^!$)kyBpOE>O=N2Jd0dKETP8? zF|#EAhDX0PIme&u6x6A1Xle`u4U$q&Bs($=Ptdc7%-d~?i?_B{Ku(Bne(Ogmgg~>l zah`9bjE-a{%Z;S2N#>Ddmys9vx}Ggq!>)6{y52NU8?62l(z!xoTk9Ow*Un!DxEP=5 z`Sp>!D(M)6y*A545!7EYBRFTWj;3$+(xw345-dU2Yc;OspS_3vyz zI*P`CShySMBjN}whNVtS2Wn?gzd_P;%nF?)$ihsU3bof;`;~;jeK^Z)|Br2X@{~bb zT>E?}2qvv4gPV{!L8q+kalNrTk&Ba7k*XcLg19rc{axut^?a7Sv# zGs33)TDW2WSquDW;u08I`!N%>Cbf)2SY9gIRKPGC!Ut^;maYW-k!>`h%;e3+a{0ew zrPu8`3tzgOks{tKu6SVf_V$J*xZdS{Zwu9`%!!;O$fj(f7kaMw^z7Y6$@{IV2~eE1 zsQr|=$?gAof=Zg%rHbTxFDDN|zzMTEQV#e_fBk?RBR#rgvc?UZpowQ;Wna(Ra7IGzA;pP< zRgYj)O_rr7YQ|!+&ICN_zM}b?2Pw~|+Qt;3B3CK`BX21G{h{;zvI=g?@ zcyugP#|8zy@}L%Y8Jgl#Ou5wC9Z6JH-8#Ukp8qA)3AqT+(ht?6Cck zeS%Fw5(<0$8Wq%8>`B0H4HSQ$pyHrJvcMYqX#^)o-!1R`^S{Au1Zg=rkz1AmE_dQEG)i&cc;dsY?cmO!N~CIAD`e&D`jWooKtIU%eYUx;y+wMYA8h- z@WY-(q_US{V@M!QARY-xOz@NF@#>8uQ`T)mbM21pPw-gtBa)XDHAQGE#z1dI#y0hT zFlW7zN06JE4H$;b!aJ$P%Cx9excBdxX7dX#b?39tGY#u}27jRBQr36+QY&!eZ|885 zEA&fF1DH2NgnWY%s0Ja{K041pOsh~pCL%Vm=?`TOqRrF$`|oOMD+eb|E}X(2rW#0!~c1@;`TbWGeUVJTjSmh|u)1Q5-FB|MmBp zP8QiLq+)jC%P<46Kw}3dhqcX3!eRUszm_WG##fj*9$fCR;M2YmrfA@ZN4{x>weouO zDlR-bT>MGG#04?-#aZ9Z$Z+|>qj4!7g9B{!YyU_PYF>J=fHYeTLqF z0|#i`B!`*hULi{r7lj!tU}^-+RK+#|m@xAP*|veOivw7knF%Up2;JvXoOklUEgzHedx z)$$-g3(&&b#eu$PR%Swkzsm;)M}kUq_WXMKh1O8@Xj4s?^6=40pU$>h+@P`H^Sx=rmb!Cc}&G56==!6hULc?RxD+3NvTs4tqC;Edp z%7O8N(L6zk<%SdItc62P5%}&hD3&J866x>_0-x|~aeyVbqR@vwX1TkR8s8dCsq#lG zwBLGjFTdAh+1H-6TR?eJIGycDw2u%Jv@RUjL1s2RjlRImn73(IG^i9ngfgQbe)an@ zvI3lroN@ITF%SC27L>>Tu>4K(7uA0t6=CZbDopnuNF6R1^Mhkd3OL5ZVH+Jqg>d|b zG52AW8IW!bA-$^b-Taxq}zl`-6@>8Ar(ElEL+=rGcQEFNge3+X7Q( zmE^~jWH_hMw?vQ0{sRZxLztb}B*e@LRAO{O2LvSrv+bu;GQztN!r&0X`c5K61q%b# zhtol8Ey>RbuOm?$;|0T6ie%%oFR&mmtfv+JqhisGY9a^a(g5yja^>}fJ%Y_Y^@>1<^9;3t!tEC;G*c%N zj(rj(*=z2Df_senwXU?S^0&zRVOKl@}84kSUNpb87d_FO;C|i` zxa5|yM2j(u)RQ+X-?B)!j2Qq)LZA_-@b_9mpjf*Lt@|-5d&d}1{N(L0j!}@G zu+Q%KXd~9cKfO}+?OO+-WtLajH`J=Ge>j{%m8J8Ec57|rljC1V6q$4yhG=6@c2Xft zM0%5%sLfVgQ<3lL;vyw1XoeuQC1f9_64fr^q`w^pC6@HZ4a>393Te4sOd*0YlY?C; z3d&mCB7b=#&+OO5(*Wo+68f|AZJ>VaHEd49=L6Tm;CU z8kb=>NzTQV#1CLEdeV`x%ISaZaQZjL4tc`k=Twm3!hl~F>6nAY`cAWEe(m0ddBD*? zngJyZ4H0qEAI#BajitWdV0G1~yRwNnSK(3TmFiYfRCKVfflBNY6Fw(;9G1T)oP9}Z z3ZZrq_ z5jJ&xzI^!GK9=HfmlFO2$A)53=3cVI4tg5J_3G;%5wafUK*IM!LuKL~K{zOljeJ~h znVIkv#?q?S8g>zYC^c7&=BsIoXa(ozPU7M%dkudrs*y6Y_o#TOv6l?>p}4lH=fJSb zlz#)UhiiDfx%+~_;Sr`ThE2ESo>F%FbVSKrngM*r`)Ph39VFI%Y!9_IwqRvOVRRNs zlwCp07)=C7KTaPV{T7SlL~^lYd{9xqLIGb{xs;J{K4|kNC(%pGEJ!BkQ;p$h zEMo%0YVlM_h*1(o>5IAXF_Css#b?Gz78(<(*|PSK&&&xL_&FWMH~gGp zz@&-Q0>N@F+)%a>dy0aWg;N<;+C>V3oe9Kgm59QHhR8@fYQ8cG+(-bQkN!|$UD6>- zu>^c~G?&|u*YZX$I-22Gv9MOKvX+dIxpzK&7NkHy0g=46@^>hj#~)@*!XM&^U0xv- zEkoKgk~R#Y}B$i_y+#AyEY| zD%g%mATEjK(s&G{#zN#OOgQDf@R zgBIPjC}-lqF%rF#4hy2ixPst|HHAKI0z+3qrEQ!PEvVZu8r29Od2@>YGa>~$a`Qkx z+T9@YQ|_ng2qH`PvYBI3MDNXYU?}5yZg1{SQxDo~y{0iSs?=PI5%)gC4l_BQ=8z_u z;DfI(n~>#vEg!p&huktObw-03;fcj8sA3*IpU$xe8XX~Q+jU({RCQqO17cf{q(#md zKc*@ymt~~CeNQf`rl}+s9jA^a-=iBv6ogT6V0E&v8?WLRrx=)mVE5+2A2sJwP5___HM!>4XI%GhpTPAoalf&@7C z)b?ez;LSP4=N1LkJ;St!hnwP$@wd5Ywi;&1#f(NmxS+qdpeL+CkyE;yKs>+K71o|s zYVwWk$RdJ5${Y*7_6j5n^ve!ZWKodI(xG<>idmiNk_;j>bnbHodVcOa)+J8545J#c z*UHa0g6)kTb&0Zl2N>N9TrgszeC}ZfB}WSXf)>oh%O~pA=#;4I-hVsDWqWz#6uDpU zW#NJx`vL=tTz=ud#Q1VgaR(Z!@?BOqqfG%Iu#h(lZeG1>Rs#9l9zhVq+9;Tq0QdKy zJ#wIFj0M43ILEDX-@2+D_PB{N{+WE}apxo_DY76DfeouSw`oTkJ!&_ZlFxeLue=OQ zC)*RHvFsxqm`+zTZ-kyRO+Fm>ctY#Ymnb$mQ^1_FKBKE&7Y-RNLldI`PdW`UlG}c+ z^AKH104I`2c!VdhyFs>xHBEm?fn0o{`rRKt<;T8`XI{vIG!k@L+z{#bvnHz_{l&%} z`!$9+Jw3niH*V{ktx-@id%E8;U^ht6(`~WgTF*Rcs}99|C6PwQkjke;OuE#(MI;d* zMwy{k(tmKIu1kDjmeRM8;75@KnJpg^F3*-i$qVx)70oq>-s_Pcl|!3;uh5<4xqr_ZN!u=v9B#huCsVybgL8zp^jDE8R`hB8x(9SB4B_}?Mx zl~&WM2Mo!e=z12)jCUFRu*#d#iHD1$XCa1J5vw}53}P9}&?o&fb4eFs@rDp!((hDR z3|79c_4EQ_S!|lXFnQE5I3Vh@(cj7a-1${?oBKOkgCN(h^^MztrMD*{iy?dmKWJO; zjP}5%z3lK}CL4Yl5d)iABh_$ z&R{Tm*Td$!KRKO}1fjXBiIBm0jl-XpDMh9iTSfaST=;dxy=k~w zXp>6G+nk2Gv6HyTa4S2W=BjLhGYO*vkX%)zlIcfakHbYe%E6z=CsPEvQ=PP;GW>kH z)pluvRU00%qDbWvGMYP_Hu3JEeb#|+;ST8_caq(m@9!diFJkm{A>slzU3{dp37nA= z8U+?^%_;Yp^jeirjy#(n*&x8>LESegO-}_Q*ChoiEG7|% zR*)CVbQ_Ibf(#e+Y!K9|60xmH;Bh#o6L$RB5gP;H3L$ggum%SrCLY{f7+>8ot7I-d zT!Sn@R&JG*%*}(tw+Usb)W<&5X~h4g{Dwhm2$fSE?vChi(4`v`qzj*50lx4K17T2D zlyD_h|J2y1$kndG#hOvTz_zmz87*zM=6U;8)e*bNbqHM5!XiEV`qz=Tx~mht3H__& z`|MD$*RO{>0S1=;Q7zI63jM^@{(*fM+_Uai%Z7od%br(w=^U=8FZ?baf&EM+X}tf2 z^%(mky4KF_@qm)7s5Md=(R1kFilrye=c*Z!+Jml8r4d+5_Bz_*M+rYz*YNb)ItUi-UfkoJV zLXDtfLeEuvGtS?=g^l~#2y;hV=y^ZBKYqL?d-#{GU7XnQy6`z7CdPRzuh#@{%0u${ zymL#G)PoBiFZ4gY2*0=pf9*+Cs6Ip|2lii>F6_^oB*^Nb%v>#FD6Ovt!NNG-8g+J_ zj2^K$FN$rVn6+KpT`6_JV6a_v`pbu}w(+Ui6ffCnS`pU3?B4`AC#CFUZ!4`vgC|-x zb{RWno}Q)sUidf94sj1*67{;Mn>Z`}M;}jxT<7_hnGCvk`>c7D+v~qXRL=_X(3G zwp7rVqh3>ep3QG^QWkQtxKy67IvBOQjOccD?UWKK9U|$-GM=q8vRb#5QuO7ffhMfy zd25i}t0=&dX}?=Yu<}sw>v>9)1q0+ z--prpZ^i`Ir)x64Xw}{MQa>W6o*I67J`G9zzIjMcN!ZkRtGmwWI9SDHGA=JBUWtEK zWWYFHXx(<_stH&BI=lkc1hE&s9XW@43h%>JjDoed!19@<$#{;jn5Hu=;TXUS1t6nB z&x0j+=E|3d*_$HfL~j*K;f?~Dwx%E1uP`az_4Gs`Ptx5YInAy5&UDM<{GN8rq~iB+ zl!uC;VO1%`WUhNaP3QdWfxU)DXEXk^r7WBU`m%pgGaPA0i7y8^4GwS{Mb-CtE~?Qk z6C@SOP!fkc+8AYY49lr^p{TQn-CJ#Rwm*K(GeCB2+bqLix3c1C;Cpln($dlK`hneF z6aMK}=ZXWtk`~cXQ8ahtyRZYl_ukmhMAC(3IIVz@29@%r{3ht0-!=X*R~$+4_ZjPu zIo(-pcis5o%SBsZt;dudr{jdYT0L#Z5tNtmw};u$=W3IM&A%@h1l>wG0v~xAJ8}L~ z9CKIIo^Ui9QA3DSZPC9ExQ=(72$Mrd!G8iwva~so>VD;y;9N?Bjf(;M_Z}sU3v4O8V zv?Kz53R6okR}S?0tq(c<_P2H|oAk-qgja(Rw;G>>&GsGr+uFT$Kkd$^){I|_ikZj6|p+18ph=}e?{{4|(FIIe5o>qMZn{+|Tp(fUdh*nnQD>F!SPL z!XaI`nR;>Eb8f)nmB=;Gz4j_R z=OY+1l|ufkH*oI^#)+F%cn5 zE(YpCEF8p|xnI>&(N>4{_!ZwTH;=q6Y>ZDvmi~v%(aTUv(Y|U#+a!t$yd2fbF}_h- z@+Go}0c0miU36w@V4G_>%E%CgeaJY_2-%73fq*SI%XW*HVQRLPWDI<&po+Q5#US@` z8yapAn*1F9JJtt5Ckkmf%^TZHwx+IgNDT&yzi)^`?pnotfzu2Z!Pb@1t@@>OM#@xj zmIFhuqAt)jjYrAm~B_q zWAmEp$YX~orxC|#1k%L!oZYUoO=!kk9N)70R>rLT2qzUQZDR<2vGC0r#hpp?cO5bZ~RO_Xx)j-X?=HS36gN)tQdy^QS;#0(*z}e(p5)?=URpI zt4TIba!*c{O`be3Y|ZfdA7jmRV{!m*-PoV5yOfpk_>GHupt^1os82$&J4q;~fs?n? zpof;&8bl57!mx4C_3A{uG@-x#UbB(zmH`S&SLL8C%_Z6PA}`-<0t!Ah!^jp zADKBp^l6weF2NhRb5Yd6*(E7mK!Yk~Z^qsJqNv+DZYX`49^E$1maObhsq7Yz zDj_eQ>`;@n5NcHj*E-4qNh$mDjK|rwl}``DHdH?%l5|})Ync}mClnRtNYMa>-LJ>C z_MIN%8IZS=ej?vXSS|f*UJLV!AqR#T-Ib;FFxB)3gX+%w)>hx{;{}$dqZN3F!OVM= zea6g=+Xb9x!(xxgn{W#AShCvRvz~gkdndIKeG;X_{EbUr!z?c zR)YDd9ZKyeV`E~`dQ|cesrb`BW}kJdBT-2|m%my(-=DFFtoI730EZx*2dUVTP{*zZ zv@r+oK4~NOt90b1E-t`L+Mpd>3wBMJ7$`a?gKG1O?@EC1mgN0@Zi-8`9lvtL>BVkzEVi@}dtCIbuHqGsnN&;)wptBuCn0>Wyv1RKcZKsR{dcX%E&>(UEt94)Z4)&AV^Q0m1M41ZT;|iwRmiN2W^l) zH6+rMAkxQ){yRDMaKL1n#!)oeb~`(?tZKWtyXkL{r}f^~FbeeYdTMr#@3iuS5lf5B zBI@deJng<=ebOXc3B^@tV*diiSD4*^sSnt?Mx+ zP^-KlwPriG&aqMXg?|krjWtK(DFAw*3J@ou`i&i%@UZeTcQ%s}E)K$Lb&mi&oO*Y) z7oerXpU?)aV&+PY%ciQPW~ymH`=zGN29S)*=_B{d65IVZK9UZziO+4fU{K$$V^L03 z#}ENui^3~e()wST1N$-nc@z-}3~Cimk0XpR?AOxfv#G;yrfOE6AB2EuFIzcSuE%!g zLjo)y&-D=;6k*fGWPmqb9w2qLS%m)nR0#U`RmiT5txwOR5U|S!YT}xPu8!fPw>C?NB%Fx74EFD~qa*%ep>(#25`dC^ z^cf+20Id@6&0_2NU~IPVs@w6o#hNx|7e5k^@eEI_DbzWk{|i$ z)qR%-y?$zV3lMG}z1YfPU?#Kevk>kOVo02RJ?lb1%dYXH%qEBFC2Aa5wh=_R{rItf zFg5H*^Iq)8^YM~vDn2ohs!Xua3yA$G|9uA`R}+te&9@>?stD169dYtqw_!I8%$02o zVESO~TP_LEi9rMa% zLa;Lh(=fCUhGGoY%$!-IcEiWP_>0j&yTopOq2qhx=T8+j8ybfb6o3btKUrUUeM*^j zW?b=9S8286C8yLle%ntZzkhzAJ?$L0W7d&;z_rR=B!dc@Z(i*&FTZ0MRzr~cZ z6j_i4V`Q>1+O)qN0LRw<&IzHnymh% s`TxW?h>f6gyEhU(Ul77u)F+`7^GdJXjw2TM`!{c7BoxJ~M2&<02NTH2IRF3v literal 0 HcmV?d00001 diff --git a/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj b/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj index 7261487..9fbea31 100644 --- a/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj +++ b/CRSim.ScreenSimulator/CRSim.ScreenSimulator.csproj @@ -8,6 +8,7 @@ + @@ -23,6 +24,7 @@ + @@ -93,6 +95,7 @@ + diff --git a/CRSim.ScreenSimulator/Converters/ChineseToPinyinConverter.cs b/CRSim.ScreenSimulator/Converters/ChineseToPinyinConverter.cs new file mode 100644 index 0000000..b3286c9 --- /dev/null +++ b/CRSim.ScreenSimulator/Converters/ChineseToPinyinConverter.cs @@ -0,0 +1,53 @@ +using Microsoft.International.Converters.PinYinConverter; +using System.Globalization; +using System.Text; +using System.Windows.Data; + +namespace CRSim.ScreenSimulator.Converters +{ + public class ChineseToPinyinConverter : IValueConverter + { + /// + /// 将中文字符串转换为拼音(带声调或不带声调) + /// + /// 要转换的中文字符串 + /// 拼音字符串 + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) return string.Empty; + string chineseText = value.ToString(); + if (string.IsNullOrWhiteSpace(chineseText)) + return string.Empty; + + var sb = new StringBuilder(); + foreach (char c in chineseText) + { + if (ChineseChar.IsValidChar(c)) + { + var chineseChar = new ChineseChar(c); + var pinyins = chineseChar.Pinyins; + if (pinyins != null && pinyins.Count > 0) + { + var pinyin = pinyins[0][..^1]; + sb.Append(pinyin); + } + else + { + sb.Append(c); + } + } + else + { + sb.Append(c); + } + } + var result = sb.ToString().ToLower(); + return char.ToUpper(result[0], culture) + result[1..]; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/CRSim.ScreenSimulator/Models/StylesInfoData.json b/CRSim.ScreenSimulator/Models/StylesInfoData.json index 9a5a8db..e690660 100644 --- a/CRSim.ScreenSimulator/Models/StylesInfoData.json +++ b/CRSim.ScreenSimulator/Models/StylesInfoData.json @@ -343,6 +343,18 @@ "TicketCheck" ] }, + { + "UniqueId": "BeijingNan.PrimaryPlatformScreen", + "Title": "北京南站站台主要看板", + "Region": "北京", + "Author": "电排骨", + "Type": "站台屏", + "Parameters": [ + "Station", + "Platform", + "Location" + ] + }, { "UniqueId": "BeijingNan.SecondaryPlatformScreen", "Title": "北京南站站台次要看板", diff --git a/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryPlatformScreenViewModel.cs b/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryPlatformScreenViewModel.cs new file mode 100644 index 0000000..dde1e42 --- /dev/null +++ b/CRSim.ScreenSimulator/ViewModels/BeijingNan/PrimaryPlatformScreenViewModel.cs @@ -0,0 +1,12 @@ +using CRSim.Core.Services; +namespace CRSim.ScreenSimulator.ViewModels.BeijingNan +{ + public class PrimaryPlatformScreenViewModel : ScreenViewModel + { + public PrimaryPlatformScreenViewModel(ITimeService timeService, ISettingsService settingsService) + : base(timeService, settingsService) + { + ItemsPerPage = 1; + } + } +} diff --git a/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml new file mode 100644 index 0000000..88d9c84 --- /dev/null +++ b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml.cs b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml.cs new file mode 100644 index 0000000..c5994cd --- /dev/null +++ b/CRSim.ScreenSimulator/Views/BeijingNan/PrimaryPlatformScreenView.xaml.cs @@ -0,0 +1,15 @@ +using CRSim.ScreenSimulator.ViewModels.BeijingNan; + +namespace CRSim.ScreenSimulator.Views.BeijingNan +{ + public partial class PrimaryPlatformScreenView : BaseScreenView + { + public PrimaryPlatformScreenViewModel ViewModel { get; } + public PrimaryPlatformScreenView(PrimaryPlatformScreenViewModel viewModel) + { + InitializeComponent(); + ViewModel = viewModel; + DataContext = viewModel; + } + } +}