Проблемы с макетом элемента управления Silverlight - PullRequest
1 голос
/ 09 декабря 2011

Я пытаюсь заменить сторонний элемент управления menubar Silverlight 2-го поколения в нашем приложении Silverlight на этот , после обновления до VS2010 и Silverlight 4 сломал сторонний элемент управления, и поставщик сообщилМне кажется, что купленная нами версия не будет работать в Silverlight 4. Мне удалось заменить все остальные элементы управления, которые мы использовали, на стандартные, но стандартного элемента управления Silverlight нет.Я думал, что заменить его будет довольно просто, но, видимо, мои навыки XAML не подходят для этой задачи (примечание: я сам не написал приложение, унаследовал его).

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

Проблема, с которой я столкнулся, заключается в том, что если я помещаю меню и содержимое в разные ячейки одной сетки, меню обрезается до ее ячейки сетки (чтобы при щелчке не отображалось раскрывающееся меню), но если я добавлю холст с двумя сетками, имеющими разные z-индексы, я получу меню для правильного отображения (с перекрытием содержимого), но приложение не изменит размер в соответствии с окном браузера.

, то есть менюобрезается, если я выложу это так (это упрощенный XAML, чтобы попытаться объяснить, что я имею в виду, я попытался не исключать какие-либо важные атрибуты, но мог бы иметь):

<Grid x:Name="LayoutRoot">
    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <slm:SLMenu Grid.Row="0" Grid.Column="0"/>
        <StackPanel x:name="Content" Grid.Row="1" Grid.Column="0" />
    </Grid>
</Grid>

и если явыложите это так, меню в порядке, но элемент управления не заполняет окно (добавление цветов фона означает, что холст растягивается, чтобы заполнить сетку, но его вспомогательные сетки не заполняют его, но сетка, содержащая элемент управления меню, будетизменить размер, чтобы он содержал элемент управления меню при отображении раскрывающегося списка):

<Grid x:Name="LayoutRoot">
    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Canvas>
            <Grid Canvas.ZIndex="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <!-- define grid with 2 rows, one the height of the menu -->
                <slm:SLMenu Grid.Row="0" Grid.Column="0" />
            </Grid>
            <Grid Canvas.ZIndex="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <!-- define grid with 2 rows, one the height of the menu -->
                <StackPanel x:name="Content" Grid.Row="1" Grid.Column="0" />
            </Grid>
    </Grid>
</Grid>

Я бы предпочел исправить это с помощью первого макета, так какЭто то, как это было сделано раньше.Я попытался установить значения Z-индекса на самом элементе управления меню, но, похоже, ничто из того, что я делаю, не позволяет ему выйти за пределы ячейки сетки.

У стороннего элемента управления не было проблем с перекрытием его ячейки сетки, так что я делаю не так с этим?

Статья CodeProject, где опубликован этот новый элемент управления меню, кажется, осталась без ответавопросы, поэтому я подумал, что сначала попробую здесь.

1 Ответ

0 голосов
/ 22 декабря 2011

Элемент управления меню отлично работает, когда он находится только в сетке LayoutRoot, попытка разместить его внутри подсетки была причиной проблемы.

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