使用UserControl内部的基本控件的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用UserControl内部的基本控件的属性相关的知识,希望对你有一定的参考价值。

如何在不使用DependencyProperty的情况下使用用户控件内部控件的属性?

因为,例如,如果我想使用按钮的所有属性,我将不得不声明所有这些?

如果有另一种方式没有用户控制而且它是正确的,如果你回答它我会很感激。 (谷歌翻译,对不起)

用户控件:

<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>
答案

做你想问的事并不常见。

让我们考虑一个用户控件,它就像是一个控件一样工作。例如,时间选择器。这包含两个增加/减少小时和分钟的滑块。您还可以在小时和分钟文本框中进行改写,并且在两个文本框之间有一个:。

这个用户控件是关于一个属性的。时间。您不关心外部的分钟背景。如果这改变了它在usercontrol的内部。

在这种情况下,您通常会向用户控件添加一个TimeSpan依赖项属性,这是它使用外部的唯一内容。

几乎所有商业WPF开发都使用MVVM模式,并且TimeSpan将绑定到父视图的viewmodel中的属性。

这是一个场景。

另一个是usercontrol封装了一堆可重用的UI。

样式具有范围,因此当您应用样式在窗口中说出按钮时,那将适用于其中的用户控件中的任何按钮。设置他们的属性。

还有某些依赖属性标记为“inherits”,其值在视觉树中传播。

其中之一就是DataContext,大多数团队都会使用它来处理用户控件中的属性。

使用MVVM会有一个MainWindowViewModel。

那会有(比方说)ChildUserControlViewModel属性。这将与使用datatemplate指定数据类型的usercontrol相关联。

然后,您可以使用RelativeSource绑定将usercontrol中任何内容的属性绑定到ChildUserControlViewModel的属性或MainWindowViewModel的属性。

ViewModel首先是WPF的常见导航和合成模式。您应该能够找到许多博客,在SO帖子中比我能更好地解释它。

这是一个:

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

以上是关于使用UserControl内部的基本控件的属性的主要内容,如果未能解决你的问题,请参考以下文章

WPF ----在UserControl的xaml里绑定依赖属性

UserControl:如何转换依赖属性并绑定到结果

UserControl 的内容属性内的命名控件在运行时始终显示为空

WPF 自定义控件并使用(例如带水印和字体图标的文本框)

WINFORM UserControl属性的特性

使用该控件时的 MVVM UserControl 和绑定