تمكين زر في WPF اعتمادًا على ListBox.SelectedIndex
سؤال
لدي موقف واجهة مستخدم كلاسيكي إلى حد ما - تم تسمية مربعي قائمة SelectedItems
و AvailableItems
- الفكرة هي أن العناصر التي حددتها موجودة بالفعل SelectedItems
, ، في حين أن العناصر المتاحة للإضافة إليها SelectedItems
(أي.كل عنصر غير موجود بالفعل) يعيش فيه AvailableItems
.
وأيضا لدي <
و >
أزرار لنقل التحديد الحالي من قائمة إلى أخرى (بالإضافة إلى النقر المزدوج، الذي يعمل بشكل جيد).
هل من الممكن في WPF إعداد نمط/مشغل لتمكين أو تعطيل أزرار النقل اعتمادًا على أي شيء يتم تحديده في أي من ListBox؟ SelectedItems
على الجانب الأيسر، وبالتالي فإن <
سيحرك الزر المحدد AvailableItems
إلى تلك القائمة.ومع ذلك، إذا لم يتم تحديد أي عناصر (AvailableItems.SelectedIndex == -1
)، أريد تعطيل هذا الزر (IsEnabled == false
) - والعكس بالنسبة للقائمة/الزر الآخر.
هل من الممكن القيام بذلك مباشرة في XAML، أم أنني بحاجة إلى إنشاء منطق معقد في التعليمات البرمجية الخلفية للتعامل معه؟
المحلول
وهنا الحل الخاص بك.
<Button Name="btn1" >click me
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding ="{Binding ElementName=list1, Path=SelectedIndex}"
Value="-1">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
نصائح أخرى
حل رمز أقل:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
إذا كان العدد 0 يبدو أنه يتم تعيينه إلى خطأ، > 0 إلى صحيح.