how to populate an explicitely loaded DataTemplate?

L

Lloyd Dupont

I am working on some drag and drop code.
When some data is moved over a target which accept it I want to show a data
preview.

For this I attempt to create an UIElement with the default DataTemplate.
Problem is, I don't know how to setup the UIElement returned by the
DataTemplate! (i.e. setup it binding correctly)

===== pseudo code: =======
IDataObject ido = ......;
object data = ido.GetData("some key");
FrameworkElement target = sender as FrameworkElement;
DataTemplate dt = target.FindResource(data.GetType()) as DataTemplate;
UIElement ui = dt.LoadContent() as UIElement;

// NOW HOW DO I SET UP DATA BINDING?
ui.....= .....
==================

PS: I do need to get the UIElement, as I measure it to position it
relatively to the mouse position.
 
L

Laurent Bugnion, MVP

Hi,

Lloyd said:
I am working on some drag and drop code.
When some data is moved over a target which accept it I want to show a
data preview.

For this I attempt to create an UIElement with the default DataTemplate.
Problem is, I don't know how to setup the UIElement returned by the
DataTemplate! (i.e. setup it binding correctly)

===== pseudo code: =======
IDataObject ido = ......;
object data = ido.GetData("some key");
FrameworkElement target = sender as FrameworkElement;
DataTemplate dt = target.FindResource(data.GetType()) as DataTemplate;
UIElement ui = dt.LoadContent() as UIElement;

// NOW HOW DO I SET UP DATA BINDING?
ui.....= .....
==================

PS: I do need to get the UIElement, as I measure it to position it
relatively to the mouse position.

Databinding in code is done using the Binding class:
http://msdn2.microsoft.com/en-us/library/system.windows.data.binding.aspx

There is an example here:
http://msdn2.microsoft.com/en-us/library/ms742863.aspx

Is that what you're after?

HTH,
Laurent
 
L

Lloyd Dupont

Databinding in code is done using the Binding class:
Not really, but....

1. thanks for answering
2. I found what I need:

--- get the data ---
IDataObject ido = ......;
object data = ido.GetData("some key");

--- show it with the default template ---
ContentControl c = new ContentControl();
c.Content = data;

c.Content could be anything, unlike what the documentation states (UIElement
or string)
 
L

Laurent Bugnion, MVP

Hi,

Lloyd said:
--- get the data ---
IDataObject ido = ......;
object data = ido.GetData("some key");

--- show it with the default template ---
ContentControl c = new ContentControl();
c.Content = data;

c.Content could be anything, unlike what the documentation states
(UIElement or string)

I just understood what you were trying to do!! Sorry for not getting it
faster :)

Laurent
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top