在我的网格中,我有一个静态列,当我点击一个按钮时,我会添加一些动态列:
class ItemConstraintColumn : DataGridTemplateColumn
{
public ItemConstraintColumn(ReportEventItemConstraint _ic)
{
StringBuilder sb = new StringBuilder();
sb.Append("<DataTemplate ");
sb.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
sb.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
sb.Append("xmlns:local='clr-namespace:MyNameSpace;assembly=MyAssembly'> ");
sb.Append("<local:SignalControl DataContext=\"{Binding Source={StaticResource SignalControlVM}}\" />");
sb.Append("</DataTemplate>");
CellTemplate = (DataTemplate)XamlReader.Load(sb.ToString());
Header = _ic.Name;
}
}
问题是我无法访问我的Xaml页面中声明的StaticResource,所以我无法绑定我的控件... 你能告诉我这有什么问题吗? 感谢
答案 0 :(得分:1)
在后面的代码中,您可以使用以下代码查找在xaml中声明的静态资源
this.FindResource( “资源名称”))
答案 1 :(得分:0)
看起来您正在将DataContext创建为完全独立的Xaml文件。
在加载时评估绑定,此时您的代码段不是可视树的一部分,因此找不到任何内容(在解析时没有父页面,因此也没有资源)。
最好不要像现在一样加载它,在其中找到local:SignalControl元素,然后使用代码绑定DataContext。
虽然Shebin本身没用,但Shebin关于定位资源的建议将完成工作的最后一部分。即找到要绑定的资源。