C# 如何转换一个";xaml字符串“;模板到可编译的xaml/控件

C# 如何转换一个";xaml字符串“;模板到可编译的xaml/控件,c#,silverlight,xaml,C#,Silverlight,Xaml,这是存储在资源文件中的现有“Xaml字符串”模板 <telerik:GridViewDataColumn DataMemberBinding="{Binding <<PropertyName>>}" IsReadOnlyBinding="{Binding Is<<PropertyName>>ReadOnly}"> <telerik:GridViewDataColumn.CellEditTempla

这是存储在资源文件中的现有“Xaml字符串”模板

<telerik:GridViewDataColumn 
DataMemberBinding="{Binding <<PropertyName>>}"         
IsReadOnlyBinding="{Binding Is<<PropertyName>>ReadOnly}">   
    <telerik:GridViewDataColumn.CellEditTemplate>
        <DataTemplate>
            <StackPanel  >
                <!--some more markup with similar bindings here-->
            </StackPanel  >
        </DataTemplate>
    </telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>

在代码隐藏中,我使用XamlReader为列创建标记,然后将其添加到网格中

var xamlTemplate = Properties.Resources.GridColumnTemplate.Replace( "<<PropertyName>>", "MyProperty");
var col = ( GridViewDataColumn )XamlReader.Load( xamlTemplate );
detailsGrid.Columns.Add( col );
var xamlTemplate=Properties.Resources.GridColumnTemplate.Replace(“,“MyProperty”);
var col=(GridViewDataColumn)XamlReader.Load(xamlTemplate);
detailsGrid.Columns.Add(col);
现在,我需要用一个可编译的Xaml/控件来代替它。 有办法吗

我曾想过广泛使用转换器并绑定到MyProperty的上下文,但这听起来不是一个好的解决方案。

一个选项是:

  • 使用自己的依赖属性派生自己的列控件(来自telerik控件)
  • 循环浏览您的属性集合:
    • 创建列控件的实例
    • 设置绑定

我相信您可以将该XAML放入控件并删除绑定,然后为每个列创建一个新实例,并以编程方式添加绑定。不过这并不是很干净,一个更干净的方法是让它更独立,就像一个用户控件,它有自己的依赖属性,您可以在内部引用这些属性,然后以声明方式(或编程方式,就像您看起来正在做的那样)连接起来。谢谢。我已经在尝试创建一个具有依赖项属性的控件,但不确定如何动态创建依赖项属性。。我有一套房产:“MyProperty1”、“MyProperty2”。。我当前的代码将为每个绑定生成2列,如何使用用户控件实现同样的效果?您不需要动态创建任何依赖属性-您基本上是从telerik GridViewDataColumn派生来创建一个新类,然后创建这些类的实例以添加到网格中。我正在考虑将其创建为一个控件(带有自己的XAML和代码隐藏),以保存两个新的依赖属性,称为DataMember和IsReadOnly,这使得在创建要添加到网格中的实例时更容易设置,我不确定我是否完全理解您试图解释的内容,但这是否仍然需要我在代码后面绑定MyProperties,因为我循环遍历我的属性集合?你能给我举个例子吗,如果有的话。是的,没错-我发布了一个答案,其中包括一个示例的链接,该示例演示了如何在代码中执行绑定。无法在列中创建模板控件,但决定在网格中创建一个,并在每个属性后面的代码中绑定。