gpt4 book ai didi

c# - 访问 UserControl 的内部控件

转载 作者:行者123 更新时间:2023-11-30 16:28:15 26 4
gpt4 key购买 nike

我正在构建一个自定义 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com