jharr100
jharr100

Reputation: 1469

using a converter while reading xaml from string using XamlReader.Parse()

I am trying to load this xaml using XamlReader.Parse() and this code:

<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>

How do I add the converter. I have added the namespace for the converter but I keep getting this error:

'Cannot create unknown type '{clr-namespace:URM.Converters;assembly=URM}DateConverter'.'

I added this is the same manner I added all the other namespaces which work well.

Edit: Parse Code

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");
                }
            }
        }

Upvotes: 2

Views: 1061

Answers (1)

Clemens
Clemens

Reputation: 128060

Make sure that the DateConverter class is public:

public class DateConverter : IValueConverter
{
    ...
}

Upvotes: 4

Related Questions