Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menambah Gelagat Campuran dengan Berbilang Objek Menggunakan Gaya dalam XAML dengan Berkesan?
Tambah gelagat pengadunan dalam penetap gaya
Apabila membuat gelagat mixin tersuai untuk butang, mungkin sukar untuk menyediakannya untuk semua butang dalam aplikasi anda. Menggunakan XAML sebaris, anda boleh mengaitkan tingkah laku tertentu dengan satu objek. Walau bagaimanapun, pendekatan ini menghadapi had apabila menetapkan tingkah laku melalui gaya yang boleh digunakan pada berbilang sasaran.
Masalah menetapkan tingkah laku dalam gaya
Masalah utama ialah tingkah laku dan pencetus secara intrinsik terikat pada objek tertentu. Apabila menggunakan XAML sebaris, XAML menguatkuasakan perhubungan satu dengan satu ini. Walau bagaimanapun, mentakrifkan tingkah laku dalam gaya melanggar prinsip ini kerana gaya boleh digunakan semula dalam berbilang sasaran. Ini menghasilkan pengecualian kelas tingkah laku yang mendasari.
Selain itu, akses kepada sifat "Kelakuan" yang berkaitan dengan interaksi adalah terhad, menghalang kami daripada menetapkan nilai melalui gaya.
Penyelesaian: Gunakan pencetus tersuai dan koleksi gelagat
Untuk menangani cabaran ini, pembangun mereka bentuk penyelesaian menggunakan gelagat tersuai dan mencetuskan kelas koleksi. Kelas ini membolehkan kami mencipta dan mengubah suai tingkah laku dalam gaya.
Prinsip utama di sebalik penyelesaian ini tertumpu pada:
Contoh pelaksanaan
Contoh kod berikut menunjukkan cara melaksanakan penyelesaian ini:
<code class="language-xml"><grid> <grid.resources> <triggers x:key="debugTriggers" x:shared="False"> <eventtrigger eventname="MouseLeftButtonDown"> <debugaction message="DataContext: {0}" messageparameter="{Binding}" /> <debugaction message="ElementName: {0}" messageparameter="{Binding Text, ElementName=textBlock2}" /> <debugaction message="Mentor: {0}" messageparameter="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}}" /> </eventtrigger> </triggers> <Setter Property="local:SupplementaryInteraction.Triggers" Value="{StaticResource debugTriggers}" /> </grid.resources> <stackpanel datacontext="{StaticResource stringResource1}"> <textblock name="textBlock1" style="{StaticResource debugBehavior}" text="textBlock1" /> <textblock name="textBlock2" style="{StaticResource debugBehavior}" text="textBlock2" /> <textblock name="textBlock3" style="{StaticResource debugBehavior}" text="textBlock3" /> </stackpanel> </grid></code>
Contoh ini menunjukkan cara menggunakan gelagat tersuai dan pencetus pada berbilang blok teks dalam gaya, sambil mengekalkan pengikatan data dan penjanaan mesej yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Menambah Gelagat Campuran dengan Berbilang Objek Menggunakan Gaya dalam XAML dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!