是否可以将标记传播到 WPF 中的用户控件?

Is it possible to propagate markup tags to a usercontrol in WPF?

首先,我是 WPF 的新手,如果这是一个显而易见的问题,我深表歉意。我已经研究过这个主题,但一无所获,也许我没有使用正确或适当的词。我将感谢你在这件事上的帮助。

我的问题是"simple": 我在我的应用程序的用户控件中有一个 Telerik RadGridView。这包含 RadGridView、一对按钮和一些额外的功能,并且在程序的所有范围内都非常通用,因此我需要扩展到控件的一些网格功能。

已创建绑定到某些网格属性的 DependencyProperties,它们运行良好。但是问题来了,我有一个通过 XAML.

绑定到网格的 属性 的动态值集合

你会通过一个例子来理解这一点。 RadGridView 可以按某一列或多列对其所有行进行分组。这样做的方法是:

<telerik:RadGridView>
     <telerik:GroupDescriptor Member="groupingColumn1"/>
     <telerik:GroupDescriptor Member="groupingColumn2"/>
     <!--...-->
     <telerik:GroupDescriptor Member="groupingColumnN"/>
</telerik:RadGridView>

所以我想要一个具有相同功能并传播到内部网格的控件,例如

<UserControls:RadGridControl>
     <telerik:GroupDescriptor Member="groupingColumn1"/>
     <telerik:GroupDescriptor Member="groupingColumn2"/>
     <!--...-->
     <telerik:GroupDescriptor Member="groupingColumnN"/>
</UserControls:RadGridControl>

并以与第一位代码相同的方式将 GroupDescriptors 传播到用户控件内的 RadGridView。 是否可以通过 XAML 执行此操作?

谢谢。

是的,这是可能的。

首先在您的用户控件中添加您想要传播的类型的 属性。你的情况:

Telerik.Windows.Data.GroupDescriptorCollection GroupDescriptors
{
    get
    {
        return mygridview.GroupDescriptors;
    }
}

现在,当您想要在控件之外更改组描述符时,您可以执行此操作。

<local:MyUserControl>
    <local:MyUserControl.GroupDescriptors>
        <telerik:GroupDescriptor Member="groupingColumn1"/>
        <telerik:GroupDescriptor Member="groupingColumn2"/>
        <!--...-->
        <telerik:GroupDescriptor Member="groupingColumnN"/>
    </local:MyUserControl.GroupDescriptors>
</local:MyUserControl>