Текст ListPicker скрыт другим текстом в Windows Phone 7 - PullRequest
3 голосов
/ 09 апреля 2011

Я использую ListPicker из Windows Phone Toolkit. Это очень просто, но по какой-то причине элементы во всплывающем окне всегда скрыты чем-либо под ними, например:

enter image description here

Здесь текст «jburchel» был ниже ListPicker, а _ http://science.nasa.gov/me был ListPickerItem. Вы можете видеть, как основное текстовое поле выглядит нормально, но ListPickerItem ниже. Я попытался изменить порядок в XAML ListPicker и TextBlock, но это не помогло. Я перепробовал множество комбинаций настроек, возился с шаблоном, но это сохранилось. Кто-нибудь знает эту проблему?

Вот пример использования ListPicker XAML, который я использую. Это очень просто.

           <toolkit:ListPicker HorizontalAlignment="Left" Margin="24,41,0,0" Name="txtUrl" 
                  VerticalAlignment="Top" Width="434" Cursor="IBeam">
            <toolkit:ListPickerItem Content="http://rss.cnn.com/services/podcasting/studentnews/rss"/>
            <toolkit:ListPickerItem Content="http://science.nasa.gov/media/medialibrary/2010/10/28/podcast.xml"/>
            <toolkit:ListPickerItem Content="http://www.sciencemag.org/rss/podcast.xml"/>
        </toolkit:ListPicker>
        <TextBlock Height="30" HorizontalAlignment="Left" Margin="33,19,0,0" Name="textBlock1" Text="Podcast URL:" VerticalAlignment="Top" />
        <TextBox Height="72" HorizontalAlignment="Left" Margin="15,141,0,0" Name="txtUser" Text="jburchel" VerticalAlignment="Top" Width="460" />

Ответы [ 5 ]

2 голосов
/ 11 апреля 2011

Кажется, проблема в том (хотя нельзя сказать наверняка без дополнительного XAML), что вы размещаете элементы управления, используя Margin для позиционирования элементов. Как вы только что узнали, это не лучший подход. Silverlight имеет широкий спектр контейнеров макетов, которые помогут вам расположить элементы управления без необходимости вручную размещать каждый элемент.

В этом случае может показаться, что вы располагаете элементы управления вертикально расположенными друг над другом, для чего вы можете использовать контейнер StackPanel. Вы просто добавляете каждый дочерний элемент в StackPanel, и он обрабатывает их расположение друг над другом. Как только вы это сделаете, потому что следующий элемент всегда находится ниже ListPicker, когда ListPicker расширяется, элементы под ним опускаются вниз.

Для более сложных макетов вы можете использовать контейнер Grid (который почти наверняка является текущим родительским контейнером ваших элементов управления), но вы должны использовать строки и столбцы, чтобы гарантировать, что элементы не «перетекут» друг в друга. Примечание. Гибкость элемента Grid имеет свою цену, и вы должны тщательно продумать, нужно ли вам его использовать или можно использовать более простой контейнер, особенно для повторяющихся контейнеров, например, в списках.

Если вы новичок в системе макетов в Silverlight, этот ресурс может оказаться особенно полезным: http://msdn.microsoft.com/en-us/library/cc645025(VS.95).aspx

0 голосов
/ 19 декабря 2013

У меня была такая же проблема, вы можете просто изменить ZIndex на что-то более высокое (чем выше ZIndex, тем больше ваших элементов управления впереди). Я изменил его на 100;

В смесь :

Adjusting Z index in blend

In xaml :

<toolkit:ListPicker
    Canvas.ZIndex="100" />

Таким образом, вы можете хранить свои заказы в xaml, не затеняя их.

0 голосов
/ 07 августа 2011

ListPicker и следующие элементы управления должны находиться в стеке:

<StackPanel Margin="0,144,0,51" DataContext="{Binding}">
   <toolkit:ListPicker Margin="10,0" Header="Service Executive" SelectedIndex="0">
      <ListBoxItem Content="Eva" Height="34" Width="444"/>
      <ListBoxItem Content="Ramon"/>
      <ListBoxItem Content="Santi"/>
      <ListBoxItem Content="David"/>
      <ListBoxItem Content="Alberto"/>
      <ListBoxItem Content="Jaime"/>
      <ListBoxItem Content="Jacinto"/>
   </toolkit:ListPicker>
0 голосов
/ 17 июля 2011

У меня была такая же проблема, и я только что понял.Именно порядок, в котором вы определяете элементы в файле xaml, имеет значение.То, что приходит первым, отображается первым и, следовательно, будет идти под остальными.В вашем случае это должно решить проблему:

0 голосов
/ 09 апреля 2011

Похоже, у вас есть прозрачный фон для выбора списка.

...