Используйте свойства базового элемента управления, который находится внутри UserControl - PullRequest
0 голосов
/ 16 апреля 2019

Как я могу использовать свойства элементов управления, которые находятся внутри пользовательского элемента управления, без необходимости использовать DependencyProperty?

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

И если есть другой способ без контроля пользователя, и он правильный, я был бы признателен, если бы вы ответили на него.(Google переводчик, извините)

UserControl:

<UserControl x:Class="UserControls.UserControl01"
                 ...
                 >
        <Grid>
            <Button x:Name="uc_btn" />
            <TextBox x:Name="uc_txt"  />
            <DataGrid x:Name="uc_dtg"  />
        </Grid>
    </UserControl>

Код с использованием UserControl:

<Window x:Class="UserControls.wnd02"
        ...
        >
    <Grid>
        <local:UserControl01 uc_btn.Background="Red" uc_txt.Margin="10" uc_dtg.BorderThickness="5" Margin="90" />

        <local:UserControl01 uc_btn.Background="Green" uc_txt.Margin="25" uc_dtg.BorderThickness="20" Margin="5" />
    </Grid>
</Window>

1 Ответ

0 голосов
/ 17 апреля 2019

Не принято делать то, что вы просите.

Давайте рассмотрим пользовательский элемент управления, который предназначен для работы так, как если бы это был один элемент управления. Например, время выбора. Это содержит два ползунка, которые увеличивают / уменьшают час и минуту. Вы также можете перезаписать текстовые поля часов и минут, и между двумя текстовыми полями есть:

Этот usercontrol все об одном свойстве, хотя. Время. Вам все равно, какой внешний фон минут. Если это изменится, он будет внутренним для usercontrol.

В этом сценарии вы обычно добавляете свойство зависимостей TimeSpan в usercontrol, и это единственное, что используется вне его.

Практически во всех коммерческих разработках WPF используется шаблон MVVM, и TimeSpan будет привязан к свойству в модели представления родительского представления.

Это один сценарий.

Еще один случай, когда пользовательский контроль инкапсулирует группу пользовательского интерфейса, который затем можно использовать повторно.

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

Существуют также некоторые свойства зависимостей, помеченные как «наследующие», значения которых распространяются на визуальное дерево.

Одним из них является DataContext, и именно это большинство команд будет использовать для работы со свойствами в пользовательском контроле.

При использовании MVVM будет MainWindowViewModel.

Это будет иметь (скажем) свойство ChildUserControlViewModel. Это может быть связано с пользовательским контролем с использованием типа данных, указанного в типе данных.

Затем вы привязываете свойства того, что находится в пользовательском контроле, к свойствам ChildUserControlViewModel или свойствам MainWindowViewModel, используя привязку RelativeSource.

Сначала ViewModel - это общий шаблон навигации и композиции для WPF. Вы должны быть в состоянии найти множество блогов, объясняющих это лучше, чем я в SO сообщении.

Вот один из них:

https://social.technet.microsoft.com/wiki/contents/articles/30898.simple-navigation-technique-in-wpf-using-mvvm.aspx

...