我正在尝试使用XamlReader.Parse()和此代码加载此xaml:
<helpers:FilterDataGrid
xmlns:helpers="clr-namespace:URM.Helpers;assembly=URM"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:grid="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:convert="clr-namespace:URM.Converters;assembly=URM"
ItemsSource ="{Binding PendingContracts}"
AutoGenerateColumns="False"
Margin="20,0,10,0"
Height ="Auto"
Width ="Auto">
<helpers:FilterDataGrid.Resources>
<convert:DateConverter x:Key="DateConverter"/>
</helpers:FilterDataGrid.Resources>
<helpers:FilterDataGrid.Columns>
<grid:DataGridTextColumn Header="Contract Id" Binding="{Binding ContractId}" />
<grid:DataGridTextColumn Header="Date Submitted" Binding="{Binding DateSubmitted, {StaticResource DateConverter}}" />
<grid:DataGridTextColumn Header="Submitted By" Binding="{Binding Submitted_by}" />
<grid:DataGridTextColumn Header="Company Name" Binding="{Binding Proprietors_Company_Name}" />
<grid:DataGridTextColumn Header="Term Of Contract" Binding="{Binding TermOfContact}" />
</helpers:FilterDataGrid.columns>
</helpers:FilterDataGrid>
如何添加转换器。我已经添加了转换器的命名空间,但我不断收到此错误:
'无法创建未知类型'{clr-namespace:URM.Converters; assembly = URM} DateConverter'。'
我添加了这与添加所有其他名称空间的方式相同。
编辑:解析代码
private void Initialize()
{
using (var sp = new SilentPartnerDataContext())
{
try {
PendingContracts = new ObservableCollection<SalesContract>(GetAllContracts());
string data = sp.XamlExpressions.Single(c => c.UserControlName == "PendingContracts").XamlText;
ContractContent = XamlReader.Parse(data) as FrameworkElement;
}
catch(Exception)
{
MessageBox.Show("Unable to show data");
}
}
}
答案 0 :(得分:2)
确保DateConverter类是公共的:
public class DateConverter : IValueConverter
{
...
}