Windows Vista Forums

DataBinding to object in external assembly

  1. #1


    Philipp Schmid Guest

    DataBinding to object in external assembly

    For the live of me I cannot get a simple databinding scenario to work! Here
    are my repro steps:

    1. Create WPF Application solution (say WindowsApplication1).
    2. Create class library project w/in the same solution (ClassLibrary1)
    3. Implement a simple class in ClassLibrary1:

    namespace ClassLibrary1
    {
    public class Class1
    {
    public Class1() { }

    private string _name;
    public string Name
    {
    get { return _name; }
    set { _name = value; }
    }
    }
    }


    4. Add a project reference to WindowsApplication1 using the project tab and
    referencing ClassLibrary1.

    5. Add the following to Window1.xaml


    <? Mapping XmlNamespace="eco" ClrNamespace="ClassLibrary1"
    Assembly="ClassLibary1" ?>
    < Window x:Class =" WindowsApplication2.Window1"
    xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"
    Title= "WindowsApplication2" Height="300" Width="300"
    xmlns:eco ="eco"
    >

    < Window.Resources >
    <eco:Class1 x:Name =" foo" />
    </ Window.Resources >
    < Grid>
    </ Grid>
    </ Window>

    For me this results in the following compilation error:

    Error 2 The tag 'Class1' does not exist in XML namespace 'eco'. Line 9
    Position 6. c:\temp\WindowsApplication2\WindowsApplication2\Window1.xaml 9 6
    WindowsApplication2

    What am I missing? Clearly it doesn't understand the reference to
    ClassLibrary1.dll. I've tried linking directly before with the same result.
    Signing the assembly also doesn't seem to have an effect (I haven't tried the
    fully qualified name yet).

    BTW, these repro steps are a simplification of a more extensive scenario
    involving ObservableReadOnlyCollection<T> to bind to a ListBox.

    -- Philipp Schmid

      My System SpecsSystem Spec

  2.   


  3. #2


    Julie Knibbe Guest

    Re: DataBinding to object in external assembly

    For me it works just fine.

    Try to use another mapping syntax :
    xmlns:eco="clr-namespace:ClassLibrary1;assembly=ClassLibrary1"

    See
    http://www.sellsbrothers.com/writing...hangeNotes.htm



    "Philipp Schmid" <PhilippSchmid@discussions.microsoft.com> a écrit dans le
    message de news: F6C6D426-8D5A-47D8-8073-6BFCEF8E6C34@microsoft.com...
    > For the live of me I cannot get a simple databinding scenario to work!
    > Here
    > are my repro steps:
    >
    > 1. Create WPF Application solution (say WindowsApplication1).
    > 2. Create class library project w/in the same solution (ClassLibrary1)
    > 3. Implement a simple class in ClassLibrary1:
    >
    > namespace ClassLibrary1
    > {
    > public class Class1
    > {
    > public Class1() { }
    >
    > private string _name;
    > public string Name
    > {
    > get { return _name; }
    > set { _name = value; }
    > }
    > }
    > }
    >
    >
    > 4. Add a project reference to WindowsApplication1 using the project tab
    > and
    > referencing ClassLibrary1.
    >
    > 5. Add the following to Window1.xaml
    >
    >
    > <? Mapping XmlNamespace="eco" ClrNamespace="ClassLibrary1"
    > Assembly="ClassLibary1" ?>
    > < Window x:Class =" WindowsApplication2.Window1"
    > xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    > xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"
    > Title= "WindowsApplication2" Height="300" Width="300"
    > xmlns:eco ="eco"
    > >

    > < Window.Resources >
    > <eco:Class1 x:Name =" foo" />
    > </ Window.Resources >
    > < Grid>
    > </ Grid>
    > </ Window>
    >
    > For me this results in the following compilation error:
    >
    > Error 2 The tag 'Class1' does not exist in XML namespace 'eco'. Line 9
    > Position 6. c:\temp\WindowsApplication2\WindowsApplication2\Window1.xaml 9
    > 6
    > WindowsApplication2
    >
    > What am I missing? Clearly it doesn't understand the reference to
    > ClassLibrary1.dll. I've tried linking directly before with the same
    > result.
    > Signing the assembly also doesn't seem to have an effect (I haven't tried
    > the
    > fully qualified name yet).
    >
    > BTW, these repro steps are a simplification of a more extensive scenario
    > involving ObservableReadOnlyCollection<T> to bind to a ListBox.
    >
    > -- Philipp Schmid




      My System SpecsSystem Spec

  4. #3


    Philipp Schmid Guest

    Re: DataBinding to object in external assembly

    Indeed this works for me! I was looking at some older examples.

    -- Philipp Schmid


    "Julie Knibbe" wrote:

    > For me it works just fine.
    >
    > Try to use another mapping syntax :
    > xmlns:eco="clr-namespace:ClassLibrary1;assembly=ClassLibrary1"
    >
    > See
    > http://www.sellsbrothers.com/writing...hangeNotes.htm
    >
    >
    >
    > "Philipp Schmid" <PhilippSchmid@discussions.microsoft.com> a écrit dans le
    > message de news: F6C6D426-8D5A-47D8-8073-6BFCEF8E6C34@microsoft.com...
    > > For the live of me I cannot get a simple databinding scenario to work!
    > > Here
    > > are my repro steps:
    > >
    > > 1. Create WPF Application solution (say WindowsApplication1).
    > > 2. Create class library project w/in the same solution (ClassLibrary1)
    > > 3. Implement a simple class in ClassLibrary1:
    > >
    > > namespace ClassLibrary1
    > > {
    > > public class Class1
    > > {
    > > public Class1() { }
    > >
    > > private string _name;
    > > public string Name
    > > {
    > > get { return _name; }
    > > set { _name = value; }
    > > }
    > > }
    > > }
    > >
    > >
    > > 4. Add a project reference to WindowsApplication1 using the project tab
    > > and
    > > referencing ClassLibrary1.
    > >
    > > 5. Add the following to Window1.xaml
    > >
    > >
    > > <? Mapping XmlNamespace="eco" ClrNamespace="ClassLibrary1"
    > > Assembly="ClassLibary1" ?>
    > > < Window x:Class =" WindowsApplication2.Window1"
    > > xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    > > xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"
    > > Title= "WindowsApplication2" Height="300" Width="300"
    > > xmlns:eco ="eco"
    > > >

    > > < Window.Resources >
    > > <eco:Class1 x:Name =" foo" />
    > > </ Window.Resources >
    > > < Grid>
    > > </ Grid>
    > > </ Window>
    > >
    > > For me this results in the following compilation error:
    > >
    > > Error 2 The tag 'Class1' does not exist in XML namespace 'eco'. Line 9
    > > Position 6. c:\temp\WindowsApplication2\WindowsApplication2\Window1.xaml 9
    > > 6
    > > WindowsApplication2
    > >
    > > What am I missing? Clearly it doesn't understand the reference to
    > > ClassLibrary1.dll. I've tried linking directly before with the same
    > > result.
    > > Signing the assembly also doesn't seem to have an effect (I haven't tried
    > > the
    > > fully qualified name yet).
    > >
    > > BTW, these repro steps are a simplification of a more extensive scenario
    > > involving ObservableReadOnlyCollection<T> to bind to a ListBox.
    > >
    > > -- Philipp Schmid

    >
    >
    >


      My System SpecsSystem Spec


DataBinding to object in external assembly
Similar Threads
Thread Forum
Re: .NET 3.5 - System.Reflection.Assembly does not release object (DLL .NET General
Binding TextBox.Text to property in nested (multi levels) object withbindingsource, Error if grandchild object is NULL .NET General
datalist -- Object reference not set to an instance of an object. .NET General
Can you reference a XAML Resource from an External Assembly? Avalon
Adding canonical aliases for Compare-Object, Measure-Object, New-Object PowerShell