![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
| |
| | #1 (permalink) |
| | 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 Specs![]() |
| | #2 (permalink) |
| | 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 Specs![]() |
| | #3 (permalink) |
| | 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 Specs![]() |
| | #4 (permalink) |
| | 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 Specs![]() |
| | #5 (permalink) |
| | 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 Specs![]() |
| | #6 (permalink) |
| | 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 Specs![]() |
| | #7 (permalink) |
| | Re: DataBinding to indexer Yes you are right. But if use PropertyChangedEvent with an indexer like that: PropertyChange("[3]"); this doesn't work, although the property in UI is databinded to my indexer with for example Text="{Binding Path=[3]}" "Douglas Stockwell" wrote: > 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 Specs![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| ASP.NET two way databinding with nulls | .NET General | |||