Элементы ListBox не отображаются - PullRequest
1 голос
/ 25 марта 2012

, поэтому я работаю над приложением Windows Phone 7, и у меня возникает проблема, обычно в других моих приложениях WPF / WinForm этот код будет работать, но здесь, на Wphone 7, я получаю проблемы, я создал класс данных:

public class AlarmTemplate
{
    public string Name { get; set; }
    public string Time { get; set; }
    public BitmapImage Activated { get; set; }

    public AlarmTemplate(string name, string time, string activated)
    {
        Name = name;
        Time = time;
        Activated = new BitmapImage
                        {UriSource = new Uri("Images/alarm_" + activated + ".png", UriKind.RelativeOrAbsolute)};
    }

}

Следующее, что читал папа, также я попробовал с жесткими данными кодирования и он не работает:

private List<AlarmTemplate> _templateList = new List<AlarmTemplate>();

private void PopulateList()
    {
        using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!storage.FileExists("file.txt"))
                return;

            using (var reader = new BinaryReader(storage.OpenFile("file.txt", FileMode.Open)))
            {
                var s = reader.ReadInt32();
                for (var i = 0; i < s; i++)
                {
                    _templateList.Add(new AlarmTemplate(reader.ReadString(), reader.ReadString(),
                                                        reader.ReadString()));
                }
            }
        }
        lbAlarms.ItemsSource = _templateList;
}

Вот xaml:

<ListBox Height="176.135" HorizontalAlignment="Left" Margin="0,567.164,0,0" Name="lbAlarms" VerticalAlignment="Top" Width="456" Foreground="#FFFFC7C7" ItemsSource="{Binding}" Background="Transparent" AllowDrop="False" BorderThickness="1" BorderBrush="#00900707" Grid.Row="1" Hold="lbAlarms_Hold">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Grid.Row="1" Height="52" Orientation="Horizontal" Name="spList" VerticalAlignment="Top" Width="480" Margin="0,329,0,0" UseLayoutRounding="False">
                    <Image Height="52" Name="imTStatus" Stretch="Uniform" Width="73" Margin="10,0,0,0" UseLayoutRounding="False" Source="{Binding Activated}" />
                    <StackPanel Height="52" Name="spHolder" Width="300" Margin="10,0,0,0" VerticalAlignment="Stretch" HorizontalAlignment="Left" UseLayoutRounding="False">
                        <TextBlock Height="26" Name="tbTTime" Text="{Binding Time}" Foreground="Black" FontFamily=".\Fonts\Nokia.ttf#Nokia" TextAlignment="Left" FontWeight="Bold" Width="230" FontSize="24" HorizontalAlignment="Left" UseLayoutRounding="False" />
                        <TextBlock Height="26" Name="tbTName" Text="{Binding Name}"  Foreground="Black" FontFamily=".\Fonts\Nokia.ttf#Nokia" HorizontalAlignment="Left" Width="297" />
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

Ваш код работает (я заметил, что полоса прокрутки присутствовала справа), но ваш текст черный на черном, поэтому не очень заметен.

Избавьтесь от цвета TextBlock Foreground="Black":)

Обратите внимание, ваше поле означает, что ваш список очень маленький в нижней части страницы, менее 1 элемента в высоту, поэтому вы можете изменить это.

0 голосов
/ 26 марта 2012
private List<AlarmTemplate> _templateList = new List<AlarmTemplate>();
public List<AlarmTemplate> TemplateList 
{
     get { return _templateList; }
     set { _templateList = value; }
}

и установите привязку к TemplateList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...