فقدت WPF ListViewItem الحدث تحت المجهر - كيفية الحصول على الحدث؟
-
19-08-2019 - |
سؤال
ولدي listview التي تحددها على التوالي / البند المتعلق. ويرتبط هذا إلى datatrigger أن يعرض صورة على التوالي. يجب فقط يتم عرض الصورة عند تحديد صف واحد.
وهذا الجزء يعمل بشكل جيد، ولكن عند نقل التركيز إلى شيء آخر، مثل مربع نص، أو يتم عرض MESSAGEBOX، يفقد listviewitem التركيز أي من تسليط الضوء على التوالي لم يتم عرضه. والمشكلة هي أن صورة بلدي ما زال قائما. وينبغي أن يكون مخفي / انهار عندما يفقد يكون ListView التركيز ... ويعمل بشكل جيد إذا قمت بتحديد عنصر آخر / التوالي يوم يكون ListView.
ويمكن لأي شخص أن تساعد على هذا الرجاء؟
<Style x:Key="deleteImageStyle" TargetType="{x:Type Image}">
<Setter Property="Source" Value="Resources/iconDelete.png" />
<Setter Property="Margin" Value="0,2,5,0" />
<Setter Property="Height" Value="16" />
<Setter Property="Width" Value="16" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Cursor" Value="Hand" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
</Style.Triggers>
</Style>
والتحيات
وTravisPUK
المحلول
وأعتقد أنك الخلط بين IsSelected وIsFocused.
وتجربة مع ملزمة مشغلات ل IsFocused و> بدلا من IsSelected للحصول على نتيجة المطلوب.
إذا فهمت بشكل صحيح، وتريد فقط الصورة لتكون واضحة إذا كان كل IsSelected وIsFocused صحيحة، كانت مخبأة على خلاف ذلك.
واحد طريقة للقيام بذلك هي وضع الرؤية الافتراضية إلى مرئي، ثم قم بإضافة اثنين من المشغلات التي تحدد الرؤية إلى مخفي: الزناد واحد لIsSelected = الكاذبة، وسبب اخر لIsFocused = خطأ
وأو عكسه، تعيين الرؤية الافتراضية إلى مخفي، واستخدام MultiTrigger مع IsSelected = صحيح وIsFocused = صحيح لأنها مجموعة الرؤية للمرئي
نصائح أخرى
وBubblewrap،
وشكرا على هذه المعلومات، وهذا حصل بشكل جيد حول هذه المسألة. وفقا لأقل كان لي أن أضيف في كلتا الحالتين كما لا يبدو الافتراضي نافذ المفعول ... ولكن لم أحاول طريقة MultiTrigger بعد، سوف تفعل في وقت لاحق.
وهذا هو ما انتهى إليه في نهاية المطاف.
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsFocused}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsFocused}" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
</Style.Triggers>
وشكرا لمساعدتكم، وهذا سيحصل لي في الماضي قضية بلدي في الوقت الراهن. أعتقد أن بلدي ISENABLED الزناد وربما زائدة على الرغم من الآن.
والشكر
وTravisPUK