• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

DataBinding to object in external assembly

P

Philipp Schmid

#1
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
 
J

Julie Knibbe

#2
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/avbook/changenotes/Wpf11-05CtpTo02-06CtpChangeNotes.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
 
P

Philipp Schmid

#3
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/avbook/changenotes/Wpf11-05CtpTo02-06CtpChangeNotes.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

>
>
>