WPF макет, могу ли я это почистить? - PullRequest
2 голосов
/ 30 июля 2011

Просто к сведению, я новичок в WPF.

Я создаю боковую панель в своем приложении WPF и хочу скругленные углы. То, что я узнал, не является свойством, которое вы можете прикрепить к Grid. Кроме того, я попытался поместить текстовые блоки в пограничный контроль, но полученное сообщение об ошибке гласило: «Дочерний элемент может быть установлен только один раз».

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

<Grid Style="{StaticResource SideBar}">
    <Border Style="{StaticResource RoundedSidebar}">
       <Grid>
            <StackPanel Orientation="Vertical" VerticalAlignment="Top">
                <TextBlock />
                <TextBlock />
                <TextBlock />
             </StackPanel>
       </Grid>
    </Border>
</Grid>

Любая обратная связь будет принята с благодарностью.

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Если у вас нет каких-либо элементов, кроме границы в этом внешнем элементе Grid, вы можете удалить его для начала.

Кроме того, теперь у вас есть граница, поскольку StackPanel является единственным элементом сетки внутри границы, вы также можете удалить эту сетку ...

Наконец, вам не нужно устанавливать свойство Orientation, потому что Vertical является значением по умолчанию, и совершенно нормально складывать TextBlocks и другие элементы в StackPanel, это его цель в конце концов ...

1 голос
/ 30 июля 2011

Там не так много, чтобы убрать. Вот что я бы сделал:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="auto"/>
    </Grid.ColumnDefinitions>
    <Border Style="{StaticResource RoundedSidebar}" Grid.Column="1">
        <StackPanel Orientation="Vertical" VerticalAlignment="Top">
            <TextBlock />
            <TextBlock />
            <TextBlock />
         </StackPanel>
    </Border>
</Grid>
...