ربط البيانات بمجموعة ذات سلوك مختلف للعنصر الأخير
-
20-12-2019 - |
سؤال
يبدو أن هذه ستكون مشكلة شائعة، لكن Google-Fu الخاص بي تركني بلا نهاية.أعتذر إذا تم طرح هذا السؤال ألف مرة من قبل!
لدي مجموعة، ويقول ObservableCollection<Athlete>
.أريد عرض هذه المجموعة على الشاشة بحيث تبدو كما يلي:
جيرسي الموافقة المسبقة عن علم] | [جيرسي الموافقة المسبقة عن علم] | [جيرسي الموافقة المسبقة عن علم] | [جيرسي الموافقة المسبقة عن علم
المفتاح في هذا المثال المبتكر هو الشريط الصغير بين كل صورة.اطرح هذا الشريط وهو مجرد ListBox
منضما إلى المجموعة، مع أ ItemsPanelTemplate
من الأفقي StackPanel
, ، وبعد ذلك ItemTemplate
لإظهار صورة القميص المقابلة لكل عنصر.لا مشاكل!
والسؤال إذن هو، كيفية إلحاق الشريط، الذي يمكن أن يكون أي عنصر رسومي، بعد كل شيء باستثناء العنصر الأخير في المجموعة؟
شكرًا لك!
المحلول
كما هو مقترح في الرابط من @KornMuffin، يمكنك وضع الشريط في الجانب الأيسر من عنصر ListBox:
| [جيرسي الموافقة المسبقة عن علم] | [جيرسي الموافقة المسبقة عن علم] | [جيرسي الموافقة المسبقة عن علم] | [جيرسي الموافقة المسبقة عن علم
ثم استخدام DataTrigger
مع {RelativeSource PreviousData}
ملزمة لإخفاء الشريط الأول إذا كانت البيانات السابقة فارغة.على سبيل المثال، افترض أنني أستخدم Separator
لعرض الشريط، يمكنني إضافة هذا النمط إلى عنصر التحكم بالفاصل لإخفاء الفاصل الأول:
<Separator.Style>
<Style TargetType="Separator">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Separator.Style>