Как сгруппировать элементы управления внутри Grid для повторного использования в XAML? - PullRequest
2 голосов
/ 24 сентября 2010

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

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

У меня есть это сейчас:

<Grid>
    <Grid.ColumnDefinitions>
        [ColumnDefinitions...]
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        [RowDefinitions...]
    </Grid.RowDefinitions>

    <StackPanel Grid.Column="0" Grid.Row="0">
        <TextBlock Text="Caption" />
        <Border Padding="2" x:Name="myBorder">
            <TextBox TabIndex="1" x:Name="myTxt"/>
        </Border>
    </StackPanel>
    <ListBox x:Name="myList" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Margin="5,50,5,0" Height="100" VerticalAlignment="Top" Visibility="Collapsed" />

    [More controls..]
</Grid>

Но я хочу повторно использовать эту часть:

    <StackPanel Grid.Column="0" Grid.Row="0">
        <TextBlock Text="Caption" />
        <Border Padding="2" x:Name="myBorder">
            <TextBox TabIndex="1" x:Name="myTxt"/>
        </Border>
    </StackPanel>
    <ListBox x:Name="myList" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Margin="5,50,5,0" Height="100" VerticalAlignment="Top" Visibility="Collapsed" />

как один элемент управления - но как мне определить сетку.Колонка при использовании элемента управления (каким-то образом предоставляя его в качестве параметра)?- и как мне установить значение Grid.RowSpan (даже если код перемещен в новый файл xaml, а не определен внутри сетки)?

Любые комментарии?

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Создайте их в отдельном пользовательском контроле, а затем включите его в свой проект.

Если вы используете Blend, это действительно просто, просто выберите все элементы управления, щелкните правой кнопкой мыши и войдите в Usercontrol.

0 голосов
/ 24 сентября 2010

Вы также можете превратить это в ресурс. Определите его в ResourceDictionary и включите в словарь места, где вы хотите его использовать. Есть одна загвоздка - словарь ресурсов каждый раз возвращает один и тот же экземпляр, поэтому вам нужно добавить атрибут x: Shared = "false".

Но способ wpf - выяснить, как вы можете сделать это с помощью DataTemplate:)

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