我正在构建一个自定义 UserControl,它允许我在 ProgressBar 中放置文本。问题是,ProgressBar 的 DependencyProperties 都没有被转移。这是我的自定义 UserControl 的 XAML。
<UserControl
x:Class = "MyProgram.MyCustomProgressBar"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid>
<ProgressBar Name="uiProgressBar" />
<Label Name="uiLabel" />
</Grid>
</UserControl>
当我开始使用此 UseControl 时,如何从 XAML 访问和设置最小值、最大值、值等。
<local:MyCustomProgressBar x:Name="uiLoadTime" ??.uiProgressBar.Maximum="50" />
我希望我不需要重新定义一堆 DependencyProperties 来获得这个功能。
最佳答案
通常的方法是使用 DependencyProperty ......一旦你真的习惯了它并没有那么糟糕。
在您的用户控件的代码隐藏中使用内置代码段中的“propdp”。
让我们以 ProgressBar.Maximum 为例:
创建一个默认值为 100(或您喜欢的任何值)的整数 dependencyproperty,将其命名为 InnerProgressBarMax。
在您的 UserControl 的 XAML 中,您可以这样绑定(bind)它:
<ProgressBar Maximum="{Binding InnerProgressBarMax, ElementName=myUsrCtrl}" />
当您在应用程序的另一部分使用该控件时,只需输入如下值:
<local:MyCustomProgressBar x:Name="uiLoadTime" InnerProgressBarMax="50" />
冲洗并重复您要公开的每个属性。
编辑: 如果您确实需要公开 50 多个 DP,您可以通过为 DP 指定智能默认值来减少麻烦。
为此,当您创建 DP 时,设置 new PropertyMetadata(YOUR_DEFAULT_VALUE) 的参数
完成后,您的控件可能会公开许多 DP,但您只需在使用该控件的 XAML 代码中手动设置一些。
关于c# - 访问 UserControl 的内部控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249370/