Windows Vista Forums
Vista Forums Home Join Vista Forums Donate Vista Tutorials Tags

Welcome to Vista Forums we are your forum to discuss Windows Vista x64 and x86 systems. Whether you need help or just want to post an idea you have on Vista, this is the forum for you.
Register at Vista forums...the world biggest Windows Vista resource Join Vista Forums Now

Go Back   Vista Forums > Microsoft Technical Newsgroups > Avalon

DataBinding to indexer

Update your Vista Drivers Update Your Drivers Now!!
Closed Thread
 
Thread Tools Display Modes
Old 09-20-2006   #1 (permalink)
=?Utf-8?B?QWxleEI=?=
Guest


 

DataBinding to indexer

Hi all,

I'm searching for a solution to bind a UIElement to a custom Data object
with dynamic number of properties.

The first idea was to wrap all values-properties, those I want to bind, in a
collection ( Dictionary<Attribute, string> _properties )
The access to values would be provided through an indexer:

public Attribute this[string propertyName]
{
get { return _properties[propertyName];}
set ....
}

to bind the indexer to UI property name schould be something like that:
for example in code:
Binding b1 = new Binding ("["+0+"]");
Binding b1 = new Binding ("["+1+"]"); and so on..

or in XAML: Text="{Binding Path=[someName]}"

so that works really good for geting data to ui. But what i'm missing here
is notification of one property's changes. If my custom class would implement
INotifyPropertyChange, I could fire for example PropertyChange("[0]"), but
this doesn't work. If I fire PropertyChange(""); with empty string as
parameter, then I can get updates, but each item in the property list will be
called. Thats not prety nice. I'm confused.

Any simple ideas, how to notify the ui about property chnage of an
individual property from the list???

Thanks a lot

My System SpecsSystem Spec
Old 09-21-2006   #2 (permalink)
Ifeanyi Echeruo [MSFT]
Guest


 

Re: DataBinding to indexer

System.Collections.Specialized.INotifyCollectionChanged in WindowsBase.dll
is your friend

-- Ifeanyi Echeruo [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights.

"AlexB" <AlexB@discussions.microsoft.com> wrote in message
news:6224DDD3-78D7-4E00-BB3A-C7A073405BDB@microsoft.com...
> Hi all,
>
> I'm searching for a solution to bind a UIElement to a custom Data object
> with dynamic number of properties.
>
> The first idea was to wrap all values-properties, those I want to bind, in
> a
> collection ( Dictionary<Attribute, string> _properties )
> The access to values would be provided through an indexer:
>
> public Attribute this[string propertyName]
> {
> get { return _properties[propertyName];}
> set ....
> }
>
> to bind the indexer to UI property name schould be something like that:
> for example in code:
> Binding b1 = new Binding ("["+0+"]");
> Binding b1 = new Binding ("["+1+"]"); and so on..
>
> or in XAML: Text="{Binding Path=[someName]}"
>
> so that works really good for geting data to ui. But what i'm missing here
> is notification of one property's changes. If my custom class would
> implement
> INotifyPropertyChange, I could fire for example PropertyChange("[0]"), but
> this doesn't work. If I fire PropertyChange(""); with empty string as
> parameter, then I can get updates, but each item in the property list will
> be
> called. Thats not prety nice. I'm confused.
>
> Any simple ideas, how to notify the ui about property chnage of an
> individual property from the list???
>
> Thanks a lot



My System SpecsSystem Spec
Old 09-21-2006   #3 (permalink)
Ifeanyi Echeruo [MSFT]
Guest


 

Re: DataBinding to indexer

System.Collections.Specialized.INotifyCollectionChanged in WindowsBase.dll
is your friend

-- Ifeanyi Echeruo [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights.

"AlexB" <AlexB@discussions.microsoft.com> wrote in message
news:6224DDD3-78D7-4E00-BB3A-C7A073405BDB@microsoft.com...
> Hi all,
>
> I'm searching for a solution to bind a UIElement to a custom Data object
> with dynamic number of properties.
>
> The first idea was to wrap all values-properties, those I want to bind, in
> a
> collection ( Dictionary<Attribute, string> _properties )
> The access to values would be provided through an indexer:
>
> public Attribute this[string propertyName]
> {
> get { return _properties[propertyName];}
> set ....
> }
>
> to bind the indexer to UI property name schould be something like that:
> for example in code:
> Binding b1 = new Binding ("["+0+"]");
> Binding b1 = new Binding ("["+1+"]"); and so on..
>
> or in XAML: Text="{Binding Path=[someName]}"
>
> so that works really good for geting data to ui. But what i'm missing here
> is notification of one property's changes. If my custom class would
> implement
> INotifyPropertyChange, I could fire for example PropertyChange("[0]"), but
> this doesn't work. If I fire PropertyChange(""); with empty string as
> parameter, then I can get updates, but each item in the property list will
> be
> called. Thats not prety nice. I'm confused.
>
> Any simple ideas, how to notify the ui about property chnage of an
> individual property from the list???
>
> Thanks a lot



My System SpecsSystem Spec
Old 09-22-2006   #4 (permalink)
Douglas Stockwell
Guest


 

Re: DataBinding to indexer

Hi Ifeanyi,

Is there going to be any better documentation for INotifyCollectionChanged
in the SDK?

1. The constructors for NotifyCollectionChangedEventArgs are very difficult
to follow. Static factory methods named Add, Move, Remove etc would be much
simpler.
2. I did a complete collection implementation of INotifyCollectionChanged
and passed it to a ListCollectionView. But when firing collection changed
events I got back exceptions stating that Range changes are not supported.
This doesn't seem to be mentioned anywhere. I had to go back and hack my
collection to fire a number of change events for each Ranged change

Do any classes actually support ranged changes?

- Doug

"Ifeanyi Echeruo [MSFT]" <ifeanyie@online.microsoft.com> wrote in message
news:OUVX5Za3GHA.3344@TK2MSFTNGP05.phx.gbl...
> System.Collections.Specialized.INotifyCollectionChanged in WindowsBase.dll
> is your friend
>
> -- Ifeanyi Echeruo [MSFT]
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
> "AlexB" <AlexB@discussions.microsoft.com> wrote in message
> news:6224DDD3-78D7-4E00-BB3A-C7A073405BDB@microsoft.com...
>> Hi all,
>>
>> I'm searching for a solution to bind a UIElement to a custom Data object
>> with dynamic number of properties.
>>
>> The first idea was to wrap all values-properties, those I want to bind,
>> in a
>> collection ( Dictionary<Attribute, string> _properties )
>> The access to values would be provided through an indexer:
>>
>> public Attribute this[string propertyName]
>> {
>> get { return _properties[propertyName];}
>> set ....
>> }
>>
>> to bind the indexer to UI property name schould be something like that:
>> for example in code:
>> Binding b1 = new Binding ("["+0+"]");
>> Binding b1 = new Binding ("["+1+"]"); and so on..
>>
>> or in XAML: Text="{Binding Path=[someName]}"
>>
>> so that works really good for geting data to ui. But what i'm missing
>> here
>> is notification of one property's changes. If my custom class would
>> implement
>> INotifyPropertyChange, I could fire for example PropertyChange("[0]"),
>> but
>> this doesn't work. If I fire PropertyChange(""); with empty string as
>> parameter, then I can get updates, but each item in the property list
>> will be
>> called. Thats not prety nice. I'm confused.
>>
>> Any simple ideas, how to notify the ui about property chnage of an
>> individual property from the list???
>>
>> Thanks a lot

>
>


My System SpecsSystem Spec
Old 09-22-2006   #5 (permalink)
Douglas Stockwell
Guest


 

Re: DataBinding to indexer

Hi Ifeanyi,

Is there going to be any better documentation for INotifyCollectionChanged
in the SDK?

1. The constructors for NotifyCollectionChangedEventArgs are very difficult
to follow. Static factory methods named Add, Move, Remove etc would be much
simpler.
2. I did a complete collection implementation of INotifyCollectionChanged
and passed it to a ListCollectionView. But when firing collection changed
events I got back exceptions stating that Range changes are not supported.
This doesn't seem to be mentioned anywhere. I had to go back and hack my
collection to fire a number of change events for each Ranged change

Do any classes actually support ranged changes?

- Doug

"Ifeanyi Echeruo [MSFT]" <ifeanyie@online.microsoft.com> wrote in message
news:OUVX5Za3GHA.3344@TK2MSFTNGP05.phx.gbl...
> System.Collections.Specialized.INotifyCollectionChanged in WindowsBase.dll
> is your friend
>
> -- Ifeanyi Echeruo [MSFT]
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
> "AlexB" <AlexB@discussions.microsoft.com> wrote in message
> news:6224DDD3-78D7-4E00-BB3A-C7A073405BDB@microsoft.com...
>> Hi all,
>>
>> I'm searching for a solution to bind a UIElement to a custom Data object
>> with dynamic number of properties.
>>
>> The first idea was to wrap all values-properties, those I want to bind,
>> in a
>> collection ( Dictionary<Attribute, string> _properties )
>> The access to values would be provided through an indexer:
>>
>> public Attribute this[string propertyName]
>> {
>> get { return _properties[propertyName];}
>> set ....
>> }
>>
>> to bind the indexer to UI property name schould be something like that:
>> for example in code:
>> Binding b1 = new Binding ("["+0+"]");
>> Binding b1 = new Binding ("["+1+"]"); and so on..
>>
>> or in XAML: Text="{Binding Path=[someName]}"
>>
>> so that works really good for geting data to ui. But what i'm missing
>> here
>> is notification of one property's changes. If my custom class would
>> implement
>> INotifyPropertyChange, I could fire for example PropertyChange("[0]"),
>> but
>> this doesn't work. If I fire PropertyChange(""); with empty string as
>> parameter, then I can get updates, but each item in the property list
>> will be
>> called. Thats not prety nice. I'm confused.
>>
>> Any simple ideas, how to notify the ui about property chnage of an
>> individual property from the list???
>>
>> Thanks a lot

>
>


My System SpecsSystem Spec
Old 09-22-2006   #6 (permalink)
Ifeanyi Echeruo [MSFT]
Guest


 

Re: DataBinding to indexer

I'll pass your comments on the the SDK folks.
I dont know of any controls that accept range changes. I'll ask the
databinding team to comment.

-- Ifeanyi Echeruo [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights.


My System SpecsSystem Spec
Old 09-25-2006   #7 (permalink)
=?Utf-8?B?QWxleEI=?=
Guest


 

Re: DataBinding to indexer

Hi Ifeanyi,

i think with INotifyCollectionChanged i can notify some changes in a
collection like remove or add items to colletion. But what i need is
notification of changes of one item's data, which is databinded to an UI
dependency property. I don't want datatabind UI to a list of items
(ObservableCollection), that is simple. What i want is databinding an UI
property to one ListItem and another UI property to another Listitem from
the same collection. With indexer i'm able to get data to UI for
initialzation, but i can't find a way for notification of chages in items?

"Ifeanyi Echeruo [MSFT]" wrote:

> I'll pass your comments on the the SDK folks.
> I dont know of any controls that accept range changes. I'll ask the
> databinding team to comment.
>
> -- Ifeanyi Echeruo [MSFT]
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
>

My System SpecsSystem Spec
Old 09-25-2006   #8 (permalink)
AlexB
Guest


 

Re: DataBinding to indexer

Hi Ifeanyi,

i think with INotifyCollectionChanged i can notify some changes in a
collection like remove or add items to colletion. But what i need is
notification of changes of one item's data, which is databinded to an UI
dependency property. I don't want datatabind UI to a list of items
(ObservableCollection), that is simple. What i want is databinding an UI
property to one ListItem and another UI property to another Listitem from
the same collection. With indexer i'm able to get data to UI for
initialzation, but i can't find a way for notification of chages in items?

"Ifeanyi Echeruo [MSFT]" wrote:

> I'll pass your comments on the the SDK folks.
> I dont know of any controls that accept range changes. I'll ask the
> databinding team to comment.
>
> -- Ifeanyi Echeruo [MSFT]
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
>

My System SpecsSystem Spec
Old 09-25-2006   #9 (permalink)
Douglas Stockwell
Guest


 

Re: DataBinding to indexer

I think you're looking for INotifyPropertyChanged.

- Doug

"AlexB" <AlexB@discussions.microsoft.com> wrote in message
news:F730B1CE-118F-4CB0-823E-4C487FDA4CE6@microsoft.com...
> Hi Ifeanyi,
>
> i think with INotifyCollectionChanged i can notify some changes in a
> collection like remove or add items to colletion. But what i need is
> notification of changes of one item's data, which is databinded to an UI
> dependency property. I don't want datatabind UI to a list of items
> (ObservableCollection), that is simple. What i want is databinding an UI
> property to one ListItem and another UI property to another Listitem from
> the same collection. With indexer i'm able to get data to UI for
> initialzation, but i can't find a way for notification of chages in items?
>
> "Ifeanyi Echeruo [MSFT]" wrote:
>
>> I'll pass your comments on the the SDK folks.
>> I dont know of any controls that accept range changes. I'll ask the
>> databinding team to comment.
>>
>> -- Ifeanyi Echeruo [MSFT]
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>>
>>


My System SpecsSystem Spec
Old 09-25-2006   #10 (permalink)
Douglas Stockwell
Guest


 

Re: DataBinding to indexer

I think you're looking for INotifyPropertyChanged.

- Doug

"AlexB" <AlexB@discussions.microsoft.com> wrote in message
news:F730B1CE-118F-4CB0-823E-4C487FDA4CE6@microsoft.com...
> Hi Ifeanyi,
>
> i think with INotifyCollectionChanged i can notify some changes in a
> collection like remove or add items to colletion. But what i need is
> notification of changes of one item's data, which is databinded to an UI
> dependency property. I don't want datatabind UI to a list of items
> (ObservableCollection), that is simple. What i want is databinding an UI
> property to one ListItem and another UI property to another Listitem from
> the same collection. With indexer i'm able to get data to UI for
> initialzation, but i can't find a way for notification of chages in items?
>
> "Ifeanyi Echeruo [MSFT]" wrote:
>
>> I'll pass your comments on the the SDK folks.
>> I dont know of any controls that accept range changes. I'll ask the
>> databinding team to comment.
>>
>> -- Ifeanyi Echeruo [MSFT]
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>>
>>


My System SpecsSystem Spec
Closed Thread

Thread Tools
Display Modes



Similar Threads
Thread Thread Starter Forum Replies Last Post
DataBinding and ListView Lammert Avalon 0 02-14-2008 02:04 PM
Databinding issue IHaveThePower Avalon 0 11-02-2007 07:02 AM
How to implement databinding like this? Leo Xue Avalon 1 11-14-2006 03:38 PM
DataBinding to indexer AlexB Avalon 0 09-20-2006 09:59 AM
Databinding and Commands Corrado Cavalli [MVP] Avalon 1 09-04-2006 11:31 PM


Vistax64.com is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media 2005-2008

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51