以下是xaml中定义模板选择器的控件中定义DataGrid的代码片段。现在Wpf资源:“未知构建错误,路径不能为空...”
<DataGrid.Resources>
<selector:CurrencyColorSelector x:Key="currencyColorSelector">
<selector:CurrencyColorSelector.NegativeTemplate>
<DataTemplate>
<TextBlock Text="{Binding Balance, StringFormat=n}" Background="Red"/>
</DataTemplate>
</selector:CurrencyColorSelector.NegativeTemplate>
<selector:CurrencyColorSelector.NormalTemplate>
<DataTemplate>
<TextBlock Text="{Binding Balance, StringFormat=n}"/>
</DataTemplate>
</selector:CurrencyColorSelector.NormalTemplate>
</selector:CurrencyColorSelector>
</DataGrid.Resources>
,抛出一个错误:“未知的生成错误,‘路径不能为空参数名:路径线27的位置79’”(编译或XAML验证错误)。
编辑
的Visual Studio 2010的重新启动后,我得到如下:
'CurrencyColorSelector' 不存在XML命名空间“CLR的命名空间中的标签:EveTrader.Wpf.Selectors ;装配= EveTrader.Wpf”。第27行18.
这使得它甚至更加诡异,因为我甚至对这个班有智慧。
我不知道这个路径来自哪里,我的示例也没有显示它的任何内容。如果双击错误,则指向<selector:CurrencyColorSelector x:Key="currencyColorSelector">
(第27行)的结尾。
有没有人遇到过这样的问题,并有解决方案?该例子是从这里:http://www.wpftutorial.net/DataGrid.html(行详细信息根据数据的类型)
澄清
这是在.NET 4.0。该问题与CurrencyColorSelector有关,因为如果在模板DataGridTemplateColumn中使用它们,模板本身可以正常工作。 CurrencyColorSelector
派生自DataTemplateSelector
。
CurrencyColorSelector
namespace EveTrader.Wpf.Selectors
{
public class CurrencyColorSelector : DataTemplateSelector
{
public DataTemplate NegativeTemplate { get; set; }
public DataTemplate NormalTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var data = item as DisplayWallets;
if (data == null)
return base.SelectTemplate(item, container);
if (data.Balance < 0m)
return NegativeTemplate;
return NormalTemplate;
}
}
}
DisplayWallets
public class DisplayWallets
{
public string Name { get; set; }
public decimal Balance { get; set; }
}
的Xaml选择定义
<UserControl x:Class="EveTrader.Wpf.WalletsView"
xmlns:selector="clr-namespace:EveTrader.Wpf.Selectors;assembly=EveTrader.Wpf">
哪一行是第27行?澄清了 – 2010-05-14 01:34:34
。谢谢 – Femaref 2010-05-14 01:38:13
嗯,有趣。 – 2010-05-14 01:42:09