برنامج الأغذية العالمي listview gridview قالب العنصر swaping

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

سؤال

ولدي وجهة نظر القائمة التي يتم عرض البيانات باستخدام gridview. هذه القائمة يتم عرض البيانات النموذجية في وجهات النظر الشبكة. الكثير من البيانات المعروضة في الصفوف والأعمدة. ومع ذلك، في بعض الصفوف ليس لدي أي بيانات لعرضها في الأعمدة. أود أن مبادلة خارج قالب العنصر لهذا الصف وعرض نموذج آخر للصف بأكمله من شأنه أن يعرض شيئا مثل "صف فارغ" أو "صف فارغ" للنص، وكذلك أسلوب الصف كله وليس الخلايا الفردية.

ولقد سعيت لاستخدام هذه الوظيفة: <لأ href = "http://cloudstore.blogspot.com/2008/06/creating-custom-view-mode-that-supports.html" يختلط = "noreferrer نوفولو "> http://cloudstore.blogspot.com/2008/06/creating-custom-view-mode-that-supports.html .

وهكذا لدي طريقة عرض مخصصة لعرض القائمة. في الأساس، لقد subclassed الطبقة GridView وعلى تجاوز طريقة PrepareItems، ويمكن تحديد القالب الجديد الذي أريد أن عرض لصف معين أو القالب الافتراضي. ومع ذلك، عندما أحاول تحديد قالب جديد، وgridview لن تجعل أي شيء لهذا الصف. فإنه لا يزال يجعل إذا كنت تستخدم القالب الافتراضي. وأفترض أن التخطيط لGridView التداخل مع وضع بلدي من القالب للصف أريد أن مبادلة خارج. هل هذا ممكن أو وأنا لديك لإنشاء طريقة عرض مخصصة الذي يحاكي GridView وليس فئة فرعية الفئة GridView؟ أود أن تبقي الأعمدة على ما هي عليه دون الكثير من إعادة صياغة. أي اقتراحات أو أي شخص لديهم خبرة في هذا النوع من السيناريو؟

هل كانت مفيدة؟

المحلول 2

وحسنا هنا هو ما فعلته في حل مشكلتي، ومع ذلك فإنه سوف تتكبد بعض إعادة صياغة من جهتي. أنا محل مع listview بلدي مع عنصر تحكم البنود. لذلك أنا لا تستخدم GridView لعرض قائمة بعد الآن. بدلا من ذلك تعريف GridViewColumnCollection مع الأعمدة بلدي اقامة مع كيف يريد منهم.

لرأس بلدي أنا استخدم GridViewHeaderRowPresenter مع الملكية أعمدته بد أن GridViewColumnCollection. هذا يعتني رؤوس الأعمدة.

وتحت عنوان بلدي إدراج ItemsControl الذي لا بد أن قائمة البنود بلدي. ومع ذلك، وأنا الآن استخدام DataTemplateSelector التي من شأنها تبديل القالب خارج اعتمادا على هذا البند، وخصائصه. إذا كنت معتادا على DataTemplate محدد الذهاب هنا: البيانات قالب محدد

وأساسا، القالب الافتراضي الخاص بي عن العناصر الموجودة في القائمة هو GridViewRowPresenter الذي لا بد الملكية أعمدته إلى GridViewColumnCollection. هذا وتبقي في خط مع رؤوس. ومع ذلك، لا يزال يمكنني مبادلة خارج القالب لصف واحد ليكون شيئا آخر من خلال محدد قالب البيانات. وهذا لا يحل مشكلتي.

ولكن، لدي الآن لإعادة صياغة للخروج من listview مع gridview التي كنت قد نصب، واستخدام هذا الأسلوب. ولذلك فإن هذا لا يأتي من دون بعض التكاليف.

نصائح أخرى

ويمكنك استخدام DataTriggers. استخدام رمز مثل هذا (التحول قوالب اعتمادا على إذا قيمة SomeItemProperty 0 أو لا):

<DataTemplate x:Key="MyItemTemplate">
    <StackPanel>
        <StackPanel Name="normalStackPanel">
            <!-- template for normal row -->
        </StackPanel>
        <StackPanel Name="emptyStackPanel" Visibility="Collapsed">
            <!-- template for empty row -->
        </StackPanel>
    </StackPanel>

    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding SomeItemProperty}" Value="0">
            <Setter TargetName="normalStackPanel" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="emptyStackPanel" Property="Visibility" Value="Visible" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

ونأمل أن يساعد.

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