تمكين زر في WPF اعتمادًا على ListBox.SelectedIndex

StackOverflow https://stackoverflow.com/questions/17906

  •  09-06-2019
  •  | 
  •  

سؤال

لدي موقف واجهة مستخدم كلاسيكي إلى حد ما - تم تسمية مربعي قائمة 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 إلى صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top