2012-03-02 4 views
2

У меня есть простая схема сетки, в которой есть только несколько ярлыков и текстовых полей. Ярлыки в первом столбце, ящики во втором.Есть ли сокращение для определений столбцов и строк WPF?

Когда я добавляю новый ящик, я должен добавить пустой <RowDefinition /> в свой блок <Grid.RowDefinitions>, чтобы он мог занять новую строку. Поскольку у меня нет стиля, связанного с этими строками, есть ли какая-то стенография, которая мешала бы этому?

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="65" /> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
</Grid.RowDefinitions> 

ответ

4

Нет, это не короткий метод руки для этого, но вы можете написать собственное решение или использовать структуру, где кто-то уже есть.

Например, CODE framework позволяет определить разметку, как показано в листинге 6 here. Это использует пользовательскую панель, чтобы значительно упростить определение общих форм редактирования.

Вы можете загрузить source и взглянуть на их реализацию и адаптировать его для ваших нужд.

+0

Спасибо, КОДЕКС, вероятно, немного избыточно для моего маленького разового приложения, но я буду держать его для будущих проектов – Collin

+0

я только представил предложение для этой идеи. Если вы согласитесь, то [пожалуйста, перейдите и добавьте свой голос] (https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/13962687-wpf-grid-column-height-definition-shorthand). – Ben

2

Вы можете подклассировать Grid и добавить любое поведение, в котором вы нуждаетесь.

Here является реализацией AutoGrid, которая автоматически вставляет новые строки для любого AutoGridEndRow объекта, а также каждый раз, когда Grid.Row больше, чем рассчитывать текущие определения.

Использование, как показано ниже:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:my="clr-namespace:WpfApplication1" 
     Title="Window1" Height="300" Width="300"> 
    <my:AutoGrid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="65" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Label Content="Label1" /> 
    <TextBox Grid.Column="1" /> 
    <my:AutoGridEndRow /> 

    <Label Content="Label1" /> 
    <TextBox Grid.Column="1" /> 

    </my:AutoGrid> 
</Window> 
+0

Спасибо, что добавили это, это похоже на довольно гладкий способ сделать это. – Collin

Смежные вопросы