Пустые записи списка с привязкой к данным

Я только начал пытаться создать свое первое приложение для wp7 и изучаю c# и xaml с нуля. Я добился хорошего прогресса, но у меня возникли проблемы со списком инструментов Silverlight Toolkit.

Я привязываю средство выбора списка, используя следующий шаблон

        </DataTemplate>
        <DataTemplate x:Name="pitVolume">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Litres}"  Margin="12 0 0 0"/>
            </StackPanel>
        </DataTemplate>

привязан к этому: List concunitsource = new List();

            concunitsource.Add(new Units() { Molar = "pM", Factor = -12});
            concunitsource.Add(new Units() { Molar = "nM", Factor = -9, Grams = "ng"});
            concunitsource.Add(new Units() { Molar = "µM", Factor = -6, Grams = "µg", Litres = "µL" });
            concunitsource.Add(new Units() { Molar = "mM", Factor = -3, Grams = "mg", Litres = "mL" });
            concunitsource.Add(new Units() { Molar = "M", Factor = 0, Grams = "g", Litres = "L" });

Средство выбора списка связывается, но я получаю две маленькие пустые, но выбираемые записи вверху (предположительно место для пико и нано литров). Я пропустил их, так как они не будут использоваться пользователем. Есть ли способ предотвратить это и просто показать 3, которые я хочу?


person shadyamigo    schedule 04.02.2012    source источник


Ответы (1)


Я могу придумать несколько способов, но, вероятно, их больше:

Самым простым было бы не загружать элементы в ListPicker, которые не будут отображаться. Или используйте Linq-to-Objects, чтобы отфильтровать элементы, которые вы хотите отобразить в коллекции, привязанной к элементу управления.

dspConcunitsource = concunitsource.Where(u => u.Litres != null).ToList();

Вы можете использовать CollectionViewSource, чтобы отфильтровать элементы в коллекции, которые вы не хотите отображать, на основе некоторых критериев.

person Derek Beattie    schedule 04.02.2012
comment
вау, большое спасибо, сработало. как я уже сказал, я начал только на этой неделе, и было бы неплохо понять, почему это работает, чтобы я мог применять это в будущем. например, что означает u? - person shadyamigo; 04.02.2012
comment
это может помочь msdn.microsoft.com/en-us/library/bb397687.aspx , который также можно записать как обычный цикл. Итак, foreach (var u в единицах) {} - person Derek Beattie; 05.02.2012