<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Obtics Forum Rss Feed</title><link>http://www.codeplex.com/Obtics/Thread/List.aspx</link><description>Obtics Forum Rss Description</description><item><title>New Post: Binding RelativeSource</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=69398</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;the Path in Bindings in WPF and Silverlight&amp;nbsp;are searched from a sertain source. This source can be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Given explicitly using the Source attribute in the binding.&lt;/li&gt;
&lt;li&gt;Given explicitly using the ElementName attribute in the binding. This refers then to the object in the same namingscope as the element you set the binding on, with the specified name.&lt;/li&gt;
&lt;li&gt;Given relatively to the object you define the binding on using RelativeSource. (a bit limited in silverlight)&lt;/li&gt;
&lt;li&gt;Using the default which is the 'DataContext' of the element you set the binding on. This DataContext is passed from parent to child unless overriden on a given element.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the example the DataContext was overriden on the top-level element (UserControl), after which it was passed on to all it's children. The TextBox was a child of this&amp;nbsp;UserControl and therefore inherited this DataContext. As you noticed this DataContext was set to the&amp;nbsp;UserControl itself. This makes sense because the properties we wanted to bind&amp;nbsp;to are on the UserControl (code behind). The Path in the binding then simply needed to refer to the Sum property of the UserControl and then the Value.&lt;/p&gt;
&lt;p&gt;Different way would have been to set a name on the UserControl and use ElementName in the binding.&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;UserControl&lt;/span&gt; &lt;span style="color:Red"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;Poc.MainPage&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;
    &lt;span style="color:Red"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; 
    &lt;span style="color:Red"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;
    &lt;span style="color:Red"&gt;xmlns:d&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://schemas.microsoft.com/expression/blend/2008&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;xmlns:mc&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;http://schemas.openxmlformats.org/markup-compatibility/2006&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; 
    &lt;span style="color:Red"&gt;mc:Ignorable&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;d&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;d:DesignWidth&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;640&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Red"&gt;d:DesignHeight&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;480&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;
    &lt;span style="color:Red"&gt;Name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;TopDog&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;
    &lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;Grid&lt;/span&gt; &lt;span style="color:Red"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red"&gt;Text&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;{Binding ElementName=TopDog, Path=Sum.Value}&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;Grid&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515"&gt;UserControl&lt;/span&gt;&lt;span style="color:Blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;There are also some special things you can do in the path of a binding that has to do with the currently selected item in a view source.&amp;nbsp;What way is best in your situation I don't know. Sometimes it can be quite tedious to get right. I do know that WPF/Silverlight programming is a lot about data binding. So my best advice is still to get a good book and study all the options and details.&lt;/p&gt;
&lt;p&gt;Hope this helps and Regs,&lt;/p&gt;
&lt;p&gt;Thomas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Tue, 22 Sep 2009 02:00:15 GMT</pubDate><guid isPermaLink="false">New Post: Binding RelativeSource 20090922020015A</guid></item><item><title>New Post: Binding RelativeSource</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=69398</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;In the sample you sent, if&amp;nbsp;the&amp;nbsp;DataContext is not set to RelativeSource Binding the information is not even displayed. I was nt sure if that was how it was intended. I was trying to implement the same on a Textblock included in a template (A Header template within a datagrid). However, in that case the binding does nt seem to pick up.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Mon, 21 Sep 2009 13:20:33 GMT</pubDate><guid isPermaLink="false">New Post: Binding RelativeSource 20090921012033P</guid></item><item><title>New Post: Binding RelativeSource</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=69398</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;No, there is no special need for the DataContext to be set like that. It is just a way to bind to the desired values. Any valid binding will work. The obtics properties are just normal properties.&lt;/p&gt;
&lt;p&gt;But that is all standard WPF / Silverlight stuff. I'd suggest grab a good WPF / Silverlight book because there are may options.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Thomas.&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Sat, 19 Sep 2009 05:29:05 GMT</pubDate><guid isPermaLink="false">New Post: Binding RelativeSource 20090919052905A</guid></item><item><title>New Post: Binding RelativeSource</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=69398</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas,&lt;/p&gt;
&lt;p&gt;Is there a specific reason why the Binding to an element needs to be&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;DataContext=&amp;quot;{Binding RelativeSource={RelativeSource Self}}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This works if I have a textblock within the main grid. However, if i have a textblock within a Template of a datagrid, it does not seem to bind.&lt;/p&gt;
&lt;p&gt;On a similar note, is there also a&amp;nbsp;way to&amp;nbsp;Bind the ExpressionObserver over a PagedViewCollection&amp;nbsp;or the DataContext of a control e.g. a Datagrid. I am trying to bind a datagrid to a PagedCollectionView which inturn is binded to an ObservableCollection. However, I need to track the current view shown by the PagedCollectionView (after a filter is applied / a different page is being viewed).&lt;/p&gt;
&lt;p&gt;Thanks again for the help.&lt;/p&gt;
&lt;p&gt;Vinay&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Fri, 18 Sep 2009 15:36:07 GMT</pubDate><guid isPermaLink="false">New Post: Binding RelativeSource 20090918033607P</guid></item><item><title>New Post: Notifications for simple queries are not fired</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68881</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;That can be explained as follows:&lt;/p&gt;
&lt;p&gt;Obtics is a&amp;nbsp;concurrent system and it assumes that when you get the enumerator before you register for change events that you &amp;quot;missed all the events in between&amp;quot; and therefore do not have a valid base collection to apply all subsequent incremental changes to. It can also be interpreted as &amp;quot;You were temporarily not interested in changes to this result&amp;quot;. So kicking the observable linq query to send change events is only valid when you have at least one listener attached.&lt;/p&gt;
&lt;p&gt;Btw. in the list in my previous posting containing all the 'Will not send' points; It should actually be read as 'May not send'.&lt;/p&gt;
&lt;p&gt;Regs,&lt;/p&gt;
&lt;p&gt;Thomas.&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Tue, 15 Sep 2009 12:50:28 GMT</pubDate><guid isPermaLink="false">New Post: Notifications for simple queries are not fired 20090915125028P</guid></item><item><title>New Post: Notifications for simple queries are not fired</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68881</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thanks Thomas,&lt;/p&gt;
&lt;p&gt;It's clear now why enumerator has to be called, but I still don't understand why I have to subscribe at least once before calling the enumerator.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Maybe the answer is in your explanation, but apparently i didn't find it :)&lt;/p&gt;&lt;/div&gt;</description><author>arconaut</author><pubDate>Tue, 15 Sep 2009 07:24:53 GMT</pubDate><guid isPermaLink="false">New Post: Notifications for simple queries are not fired 20090915072453A</guid></item><item><title>New Post: Notifications for simple queries are not fired</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68881</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;This may surprise you but it is actually by design.&lt;/p&gt;
&lt;p&gt;The idea is that most of&amp;nbsp;those CollectionChanged events (except the Reset event)&amp;nbsp;are incremental changes on a given base collection. This base collection can be aquired using the enumerator. Without first getting this base collection the incremental change events wouldn't make sense. The Observable linq queries will hold back change events untill at least some&amp;nbsp;client has read (aquired the enumerator) the base collection.&lt;/p&gt;
&lt;p&gt;Observable sequences that are (temporarily) not used do not send change events. This may seem silly but leads to some very nice optimizations.&lt;/p&gt;
&lt;p&gt;Naturaly this has&amp;nbsp;NOT been documented (I sooo badly need a user guide; just too much to do).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Observable Linq queries will not send change events untill some client aquires its enumerator&lt;/li&gt;
&lt;li&gt;Observable Linq queries will STOP sending change events after sending a&amp;nbsp;RESET event, untill some client&amp;nbsp;aquires its enumerator again&lt;/li&gt;
&lt;li&gt;Observable Values will not send change events untill some client reads its value and then only one until some client reads it again.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When manually registering for CollectionChanged events make sure that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;you read the contents from the same object instance as the one where your registered for change events.&lt;/li&gt;
&lt;li&gt;make sure you unregister from the same object instance when your are done listening and DO unregister.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Obtics will try it's hardest to return the same object instance at each call to 'c.Orders' but it is not a quarantee. Better store an instance in a field and use that.&lt;/p&gt;
&lt;p&gt;For those, I suspect rare cases where you want to know when the results of an observable linq query changes without actually being interested in the query contents itself; I'd suggest you create a&amp;nbsp;nice extension&amp;nbsp;method that would return an object with a 'Changed' event and that does all the 'not so pretty' stuff under the hood. That shouldn't be to hard and when you have it, with your permission,&amp;nbsp;I would like to refer to it in the wiki.&lt;/p&gt;
&lt;p&gt;Hope this clarifies it a bit and any sugestions are very welcome.&lt;/p&gt;
&lt;p&gt;Regs,&lt;/p&gt;
&lt;p&gt;Thomas&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Mon, 14 Sep 2009 22:09:42 GMT</pubDate><guid isPermaLink="false">New Post: Notifications for simple queries are not fired 20090914100942P</guid></item><item><title>New Post: Notifications for simple queries are not fired</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68881</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;We've been trying to use the Obtics framework but got stuck with some problems. The problem seems to be quite strange.&lt;/p&gt;
&lt;p&gt;I can email the complete 'dummy' project which is buildable and shows the problem very clearly.&lt;/p&gt;
&lt;p&gt;It's a simple WPF project, with one window, which does nothing and holds only one listbox. ListBox is only there to check how Obtics works with WPF - and just as declared, it works fine.&lt;/p&gt;
&lt;p&gt;ListBox is supposed to show all Orders (exposed by a property, which getter returns an Obtics query) of one Customer created on Window_Loaded. The p
roblem is when I try to catch notifications in code myself. Somehow notifications are fired only when I enumerate the property after the&amp;nbsp;subscription.&lt;/p&gt;
&lt;p&gt;Here's the code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;partial&lt;/span&gt; &lt;span style="color:Blue"&gt;class&lt;/span&gt;&lt;span style="color:MediumTurquoise"&gt; Window1 : Window
    &lt;/span&gt;{
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; Window1()
        {
            InitializeComponent();

            Loaded += &lt;span style="color:Blue"&gt;new&lt;/span&gt; RoutedEventHandler(Window1_Loaded);
        }

        &lt;span style="color:Blue"&gt;void&lt;/span&gt; Window1_Loaded(&lt;span style="color:Blue"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
        {
            Customer c = &lt;span style="color:Blue"&gt;new&lt;/span&gt; Customer { CustomerId = 1 };
            &lt;span style="color:Green"&gt;//lstOrders.DataContext = c;                    // When uncommented, binding works fine&lt;/span&gt;

            ((INotifyCollectionChanged)c.Orders).CollectionChanged += CustomerOrders_CollectionChanged;
            c.Orders.GetEnumerator().MoveNext();            &lt;span style="color:Green"&gt;// If you comment this, or move it before the subscription - notifications are not received&lt;/span&gt;

            Order.AllOrders.Add(&lt;span style="color:Blue"&gt;new&lt;/span&gt; Order { OrderId = 1, DueDate = DateTime.Now, CustomerId = 1 });
            Order.AllOrders.Add(&lt;span style="color:Blue"&gt;new&lt;/span&gt; Order { OrderId = 2, DueDate = DateTime.Now, CustomerId = 1 });
            Order.AllOrders.Add(&lt;span style="color:Blue"&gt;new&lt;/span&gt; Order { OrderId = 3, DueDate = DateTime.Now, CustomerId = 2 });
            Order.AllOrders.Add(&lt;span style="color:Blue"&gt;new&lt;/span&gt; Order { OrderId = 4, DueDate = DateTime.Now, CustomerId = 1 });
        }

        &lt;span style="color:Blue"&gt;void&lt;/span&gt; CustomerOrders_CollectionChanged(&lt;span style="color:Blue"&gt;object&lt;/span&gt; sender, NotifyCollectionChangedEventArgs e)
        {
            MessageBox.Show(&lt;span style="color:#A31515"&gt;&amp;quot;Orders collection modified&amp;quot;&lt;/span&gt;);
        }
    }
&lt;/pre&gt;
&lt;pre&gt;&lt;div style="color:Black;background-color:White"&gt;&lt;pre&gt;&lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;class&lt;/span&gt;&lt;span style="color:MediumTurquoise"&gt; Order : INotifyPropertyChanged
    &lt;/span&gt;{
        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; _OrderId;
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; OrderId
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt; { &lt;span style="color:Blue"&gt;return&lt;/span&gt; _OrderId; }
            &lt;span style="color:Blue"&gt;set&lt;/span&gt;
            {
                &lt;span style="color:Blue"&gt;if&lt;/span&gt; (_OrderId != value)
                {
                    _OrderId = value;
                    RaisePropertyChanged(&lt;span style="color:#A31515"&gt;&amp;quot;OrderId&amp;quot;&lt;/span&gt;);
                }
            }
        }

        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; DateTime _DueDate;
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; DateTime DueDate
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt; { &lt;span style="color:Blue"&gt;return&lt;/span&gt; _DueDate; }
            &lt;span style="color:Blue"&gt;set&lt;/span&gt;
            {
                &lt;span style="color:Blue"&gt;if&lt;/span&gt; (_DueDate != value)
                {
                    _DueDate = value;
                    RaisePropertyChanged(&lt;span style="color:#A31515"&gt;&amp;quot;DueDate&amp;quot;&lt;/span&gt;);
                }
            }
        }

        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; _CustomerId;
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; CustomerId
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt; { &lt;span style="color:Blue"&gt;return&lt;/span&gt; _CustomerId; }
            &lt;span style="color:Blue"&gt;set&lt;/span&gt;
            {
                &lt;span style="color:Blue"&gt;if&lt;/span&gt; (_CustomerId != value)
                {
                    _CustomerId = value;
                    RaisePropertyChanged(&lt;span style="color:#A31515"&gt;&amp;quot;CustomerId&amp;quot;&lt;/span&gt;);
                }
            }
        }


        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; &lt;span style="color:Blue"&gt;static&lt;/span&gt; ObservableCollection&amp;lt;Order&amp;gt; _AllOrders = &lt;span style="color:Blue"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;Order&amp;gt;();
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;static&lt;/span&gt; ObservableCollection&amp;lt;Order&amp;gt; AllOrders
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt;
            {
                &lt;span style="color:Blue"&gt;return&lt;/span&gt; _AllOrders;
            }
        }

        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;
        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; &lt;span style="color:Blue"&gt;void&lt;/span&gt; RaisePropertyChanged(&lt;span style="color:Blue"&gt;string&lt;/span&gt; name)
        {
            &lt;span style="color:Blue"&gt;if&lt;/span&gt; (PropertyChanged != &lt;span style="color:Blue"&gt;null&lt;/span&gt;)
                PropertyChanged(&lt;span style="color:Blue"&gt;this&lt;/span&gt;, &lt;span style="color:Blue"&gt;new&lt;/span&gt; PropertyChangedEventArgs(name));
        }

    }

&lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;class&lt;/span&gt;&lt;span style="color:MediumTurquoise"&gt; Customer : INotifyPropertyChanged
    &lt;/span&gt;{
        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; _CustomerId;
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; CustomerId
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt; { &lt;span style="color:Blue"&gt;return&lt;/span&gt; _CustomerId; }
            &lt;span style="color:Blue"&gt;set&lt;/span&gt;
            {
                &lt;span style="color:Blue"&gt;if&lt;/span&gt; (_CustomerId != value)
                {
                    _CustomerId = value;
                    RaisePropertyChanged(&lt;span style="color:#A31515"&gt;&amp;quot;CustomerId&amp;quot;&lt;/span&gt;);
                }
            }
        }

        &lt;span style="color:Blue"&gt;public&lt;/span&gt; IEnumerable&amp;lt;Order&amp;gt; Orders
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt; 
            {
                &lt;span style="color:Blue"&gt;return&lt;/span&gt; &lt;span style="color:Blue"&gt;from&lt;/span&gt; o &lt;span style="color:Blue"&gt;in&lt;/span&gt; Order.AllOrders
                       &lt;span style="color:Blue"&gt;where&lt;/span&gt; o.CustomerId == &lt;span style="color:Blue"&gt;this&lt;/span&gt;.CustomerId
                       &lt;span style="color:Blue"&gt;select&lt;/span&gt; o;
            }
        }


        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;
        &lt;span style="color:Blue"&gt;protected&lt;/span&gt; &lt;span style="color:Blue"&gt;void&lt;/span&gt; RaisePropertyChanged(&lt;span style="color:Blue"&gt;string&lt;/span&gt; name)
        {
            &lt;span style="color:Blue"&gt;if&lt;/span&gt; (PropertyChanged != &lt;span style="color:Blue"&gt;null&lt;/span&gt;)
                PropertyChanged(&lt;span style="color:Blue"&gt;this&lt;/span&gt;, &lt;span style="color:Blue"&gt;new&lt;/span&gt; PropertyChangedEventArgs(name));
        }


    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;pre&gt;So, as a workaround we can create an empty subscription and then enumerate each such property in the constructor. But it definitely seems not pretty.&lt;/pre&gt;
&lt;pre&gt;Any comments?&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>arconaut</author><pubDate>Mon, 14 Sep 2009 16:09:54 GMT</pubDate><guid isPermaLink="false">New Post: Notifications for simple queries are not fired 20090914040954P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;Unfortunately I'm not much of a WCF expert (yet).&lt;/p&gt;
&lt;p&gt;Bottom line is that Obtics needs to be informed when something of interest has changed value. The most common route (for properties) is to implement INotifyPropertyChanged(*). If and how this can be done with (runtime generated?) WCF&amp;nbsp;objects I'm not sure. Most&amp;nbsp;classes generated by tools in VisualStudio are partial&amp;nbsp;classes, so you&amp;nbsp;might be able to insert the logic in a partial class?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you have&amp;nbsp;more details&amp;nbsp;about your challenge I might be able to give some hints but no guarantees.&lt;/p&gt;
&lt;p&gt;*It is possible to notify Obtics in different ways but these are more complex. If you are interested you can check out the 'CustomMapping and ObticsToXml' projects. I'm sorry that the documentation is still too rudimentary.&lt;/p&gt;
&lt;p&gt;Regs,&lt;/p&gt;
&lt;p&gt;Thomas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Sun, 13 Sep 2009 12:42:05 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090913124205P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas, that was correct, I had to raise OnPropertyChanged to reflect the changes. That made it work. But if I export an object from a WCF service, and then implement updates, how do I raise the event there. The stub does implement a Notifychanged but how do we further add a OnPropertyChanged for some properties.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Vinay&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Fri, 11 Sep 2009 19:12:48 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090911071248P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;Though I have not been able to verify it yet; I think the problem with your code is that the Person class is not public.&lt;/p&gt;
&lt;p&gt;Due to CAS restrictions (reflection) when running with Silverlight, Obtics is not allowed to compile expressions with references to&amp;nbsp;members that are not public. Though Income is public it is still hidden because the owning class is not.&lt;/p&gt;
&lt;p&gt;If you would like the result to respond to changes in Income you will need&amp;nbsp;to make Income a property, implement INotifyPropertyChanged on Person and raise PropertyChanged events whenever you change the value of income.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;
&lt;p&gt;Thomas.&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Thu, 10 Sep 2009 21:00:41 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090910090041P</guid></item><item><title>New Post: Tracking Expressions</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68408</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas,&lt;/p&gt;
&lt;p&gt;Thanks for the quick response. I would love to be helpful whereever I could.&lt;/p&gt;
&lt;p&gt;Vinay&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Thu, 10 Sep 2009 17:49:33 GMT</pubDate><guid isPermaLink="false">New Post: Tracking Expressions 20090910054933P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas&lt;/p&gt;
&lt;p&gt;Thanks for the quick response.&lt;/p&gt;
&lt;p&gt;In a similar exercise, the following seems to give a runtime error. It worked well if i have native type in observablecollection.&lt;/p&gt;
&lt;p&gt;MainPage.xaml&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;partial&lt;/span&gt; &lt;span style="color:Blue"&gt;class&lt;/span&gt;&lt;span style="color:MediumTurquoise"&gt; MainPage : UserControl
    &lt;/span&gt;{
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; MainPage()
        {
            InitializeComponent();

            &lt;span style="color:Blue"&gt;for&lt;/span&gt; (&lt;span style="color:Blue"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 10; ++i)
                _Integers.Add(&lt;span style="color:Blue"&gt;new&lt;/span&gt; Person(_Rnd.Next(100)));

            _Timer.Interval = &lt;span style="color:Blue"&gt;new&lt;/span&gt; TimeSpan(0, 0, 2);
            _Timer.Tick += &lt;span style="color:Blue"&gt;new&lt;/span&gt; EventHandler(_Timer_Tick);
            _Timer.Start();
        }

        &lt;span style="color:Blue"&gt;void&lt;/span&gt; _Timer_Tick(&lt;span style="color:Blue"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            _Integers[_Rnd.Next(10)].AddIncome(_Rnd.Next(100)); 
        }

        Random _Rnd = &lt;span style="color:Blue"&gt;new&lt;/span&gt; Random();
        System.Windows.Threading.DispatcherTimer _Timer = &lt;span style="color:Blue"&gt;new&lt;/span&gt; System.Windows.Threading.DispatcherTimer();

        ObservableCollection&amp;lt;Person&amp;gt; _Integers = &lt;span style="color:Blue"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;Person&amp;gt;();

        &lt;span style="color:Blue"&gt;public&lt;/span&gt; IValueProvider&amp;lt;&lt;span style="color:Blue"&gt;int&lt;/span&gt;&amp;gt; Sum
        { &lt;span style="color:Blue"&gt;get&lt;/span&gt; { &lt;span style="color:Blue"&gt;return&lt;/span&gt; ExpressionObserver.Execute(_Integers, c =&amp;gt; c.Sum(p=&amp;gt;p.Income)).Concrete(); } }
    }

    &lt;span style="color:Blue"&gt;class&lt;/span&gt;&lt;span style="color:MediumTurquoise"&gt; Person
    &lt;/span&gt;{
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;int&lt;/span&gt; Income;
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; Person(&lt;span style="color:Blue"&gt;int&lt;/span&gt; income)
        {
            &lt;span style="color:Blue"&gt;this&lt;/span&gt;.Income = income;
        }
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;void&lt;/span&gt; AddIncome (&lt;span style="color:Blue"&gt;int&lt;/span&gt; inc)
        {
            &lt;span style="color:Blue"&gt;this&lt;/span&gt;.Income += inc;
        }
    }&lt;br&gt;&lt;/pre&gt;
&lt;pre&gt;MainPage.xaml&lt;/pre&gt;
&lt;pre&gt;&lt;div style="color:Black;background-color:White"&gt;&lt;pre&gt;&amp;lt;TextBox Text=&lt;span style="color:#A31515"&gt;&amp;quot;{Binding Path=Sum.Value}&amp;quot;&lt;/span&gt; /&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Thu, 10 Sep 2009 17:07:19 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090910050719P</guid></item><item><title>New Post: Tracking Expressions</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68408</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;Yes, both are very&amp;nbsp;possible:&lt;/p&gt;
&lt;p&gt;For the first you can use the standard Enumerable.Distinct method like:&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;ExpressionObserver.Execute(
    Persons,
    persons =&amp;gt; persons.Select( p =&amp;gt; p.Name ).Distinct()
).Cascade();&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The Cascade method will return an IEnumerable&amp;lt;string&amp;gt; provided Name is of type string.&lt;/p&gt;
&lt;p&gt;For the second just use the expression you want:&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;ExpressionObserver.Execute(
    Person,
    person =&amp;gt; person.Income * 0.3 - person.Expense
);
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And bind to the Value property of the returned IValueProvider. Income and Expense properties naturaly need to be observable if you want the resulting Value to react to changes. (The owning class needs to implement INotifyPropertyChanged (Silverlight))&lt;/p&gt;
&lt;p&gt;If you have a collection of persons:&lt;/p&gt;
&lt;pre&gt;ExpressionObserver.Execute(
    Persons,
    persons =&amp;gt; 
        from p in persons
        select p.Income * 0.3 - p.Expense
).Cascade();&lt;/pre&gt;
&lt;p&gt;If you feel like donating an Obtics&amp;nbsp;users guide,&amp;nbsp;I would be very interested. :-)&lt;/p&gt;
&lt;p&gt;Regs,&lt;/p&gt;
&lt;p&gt;Thomas&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Wed, 09 Sep 2009 15:10:31 GMT</pubDate><guid isPermaLink="false">New Post: Tracking Expressions 20090909031031P</guid></item><item><title>New Post: Tracking Expressions</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=68408</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I have another question wrt to the implementation though.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Is it possible to track Distincts on a particular property within observablecollection&amp;lt;T&amp;gt;. Say I need to bind distincts of Person.Name within the the collection and bind to a dropdownlist.&lt;/li&gt;
&lt;li&gt;Is it possible to track Expressions based out of a calculation on properties. E.g. Savings = (Person.Income * 30%) - Person.Expense and bind it to a control or a column in a datagrid.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I am sure this is what you intended with this api, but a guidance in the implementation approach will be very helpful.&lt;/p&gt;
&lt;p&gt;Thanks for your help&lt;/p&gt;
&lt;p&gt;Vinay&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Wed, 09 Sep 2009 14:21:32 GMT</pubDate><guid isPermaLink="false">New Post: Tracking Expressions 20090909022132P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas thanks a lot for the sample. I was incorrectly binding from the XAML.&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Wed, 09 Sep 2009 14:18:59 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090909021859P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;Find an example project here: &lt;a href="http://obtics.codeplex.com/Wiki/View.aspx?title=Poc"&gt;http://obtics.codeplex.com/Wiki/View.aspx?title=Poc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is almost the same. For simplicity it takes the sum over an ObservableCollection of int and uses a timer to randomly change elements in&amp;nbsp;the collection.&lt;/p&gt;
&lt;p&gt;Regs,&lt;/p&gt;
&lt;p&gt;Thomas.&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Fri, 28 Aug 2009 23:59:12 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090828115912P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas, I tried your suggested approach again. I have a simple Page with just a textblock with an observablecollection which updates every second based on a timer. I am not using using an MVVM model. Its&amp;nbsp;a very simple bind to control approach.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&amp;lt;font size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot;&amp;gt;
&lt;p&gt;&amp;lt;&lt;/p&gt;
&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;/span&gt;&amp;lt;font size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot;&amp;gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&amp;lt;/font&amp;gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt; Text&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;=&amp;quot;Status&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt; Foreground&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;=&amp;quot;#FF14517B&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt; Margin&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;=&amp;quot;5,0,0,0&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&amp;lt;font size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot;&amp;gt;
&lt;p&gt;&amp;lt;&lt;/p&gt;
&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&lt;/span&gt;&amp;lt;font size=&amp;quot;2&amp;quot; color=&amp;quot;#0000ff&amp;quot;&amp;gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&amp;lt;/font&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt; x&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;=&amp;quot;total&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt; Text&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;=&amp;quot;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;&lt;span style="font-size:x-small;color:#a31515"&gt;Binding&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt;&lt;span style="font-size:x-small;color:#ff0000"&gt; Path&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;&lt;span style="font-size:x-small;color:#0000ff"&gt;=Total.Value}&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;public&lt;/span&gt; IValueProvider&amp;lt;&lt;span style="color:Blue"&gt;int&lt;/span&gt;&amp;gt; Total
        {
            &lt;span style="color:Blue"&gt;get&lt;/span&gt;
            {
                &lt;span style="color:Blue"&gt;return&lt;/span&gt; ExpressionObserver.Execute(custOrdersList, c =&amp;gt; c.Sum(p =&amp;gt; p.ExecSharesCum)).Concrete();
            }
        }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;However I dont see the textblock display any data. Should i be doing something else. I will appreciate if you could forward me a quick sample displaying the same.&lt;/p&gt;
&lt;p&gt;Thanks again for all the help&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Fri, 28 Aug 2009 15:39:44 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090828033944P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thomas, Thanks a lot for the response. Since I needed the option urgently, I created another object implementing INotifychanged. The helpfile being broken, I meant that I am not able to see the details of the indeces. It may be some settings on my PC. I will try this in detail because it may turn out to be very useful in circumstances where one wants to&amp;nbsp;bind multiple controls out of a single observable collection. E.g. I need to implement filter options on an observablecollection which is binded to a datagrid, by using distinct feature for each property (or column) in the grid. Also the observable collection implements a real time listening and binding, so I believe&amp;nbsp;obtics supports that. Thanks for the help on this&lt;/p&gt;&lt;/div&gt;</description><author>vkapoorjefco</author><pubDate>Fri, 28 Aug 2009 14:26:36 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090828022636P</guid></item><item><title>New Post: Use with Silverlight project</title><link>http://obtics.codeplex.com/Thread/View.aspx?ThreadId=65753</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi Vinay,&lt;/p&gt;
&lt;p&gt;The snipped provided here is just the code behind. You should be able to bind to it in silverlight using code like:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;font-size:x-small"&gt;&lt;span style="color:#a31515;font-size:x-small"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt; Canvas.Top&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;=&amp;quot;80&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt; x&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;=&amp;quot;total&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt; Text&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;=&amp;quot;{&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;font-size:x-small"&gt;&lt;span style="color:#a31515;font-size:x-small"&gt;Binding&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt; Path&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;=Total.Value}&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Explicit property reference doesn't seem to work in Silverlight. (The&amp;nbsp;Text&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;=&amp;quot;{&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;font-size:x-small"&gt;&lt;span style="color:#a31515;font-size:x-small"&gt;Binding&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt;&lt;span style="color:#ff0000;font-size:x-small"&gt; Path&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;&lt;span style="color:#0000ff;font-size:x-small"&gt;=Total.(ov:IValueProvider.Value)&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;version). What is needed is the Concrete() extension method. It creates an adapter for the&amp;nbsp;IValueProvider interface that is of a concrete and public&amp;nbsp;type. The Concrete() method is used in the example snipped.&lt;/p&gt;
&lt;p&gt;The bit:&amp;nbsp;()=&amp;gt; _vals.Sum(p=&amp;gt;p.somefield)&amp;nbsp;in the snipped&amp;nbsp;is a lambda expression. Just one that doesn't take any arguments. The snipped could also be written as (and would actually be better but slightly more code) :&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:Blue"&gt;using&lt;/span&gt; Obtics;
&lt;span style="color:Blue"&gt;using&lt;/span&gt; Obtics.Values;
&lt;span style="color:Green"&gt;//using Obtics.Collections; Not!&lt;/span&gt;

&lt;span style="color:Blue"&gt;public&lt;/span&gt; &lt;span style="color:Blue"&gt;partial&lt;/span&gt; &lt;span style="color:Blue"&gt;class&lt;/span&gt;&lt;span style="color:MediumTurquoise"&gt; Test : UserControl
&lt;/span&gt;{
    ObservableCollection&amp;lt;TElement&amp;gt; _vals;

    &lt;span style="color:Blue"&gt;public&lt;/span&gt; IValueProvider&amp;lt;TSomefield&amp;gt; Total 
    {
        &lt;span style="color:Blue"&gt;get&lt;/span&gt;
        {
            &lt;span style="color:Blue"&gt;return&lt;/span&gt; ExpressionObserver.Execute( _vals, c =&amp;gt; c.Sum(p=&amp;gt;p.somefield) ).Concrete();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The project ObticsUnitTestRunner_SilverLight in the solution (source files) builds a silverlight application. In the ViewModel class (in ViewModel.cs) is a property 'PassedCount' and 'FailedCount'. These properties do not use in-place compilation but pre-compile the lambda expressions. The principle is the same though. The last method executed to yield the result is Concrete() and the Xaml (MainPage.Xaml) binds to the properties.&lt;/p&gt;
&lt;p&gt;So for the PassedCount property (pre-compiled):&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;#region&lt;/span&gt; PassedCount ; total number of visible test methods that have passed during their last run.
        &lt;span style="color:Blue"&gt;public&lt;/span&gt; IValueProvider&amp;lt;&lt;span style="color:Blue"&gt;int&lt;/span&gt;&amp;gt; PassedCount
        { &lt;span style="color:Blue"&gt;get&lt;/span&gt; { &lt;span style="color:Blue"&gt;return&lt;/span&gt; _PassedCountF(&lt;span style="color:Blue"&gt;this&lt;/span&gt;).Async().Concrete(); } }

        &lt;span style="color:Blue"&gt;static&lt;/span&gt; Func&amp;lt;ViewModel, IValueProvider&amp;lt;&lt;span style="color:Blue"&gt;int&lt;/span&gt;&amp;gt;&amp;gt; _PassedCountF =
            ExpressionObserver.Compile(
                (ViewModel t) =&amp;gt;
                    t.VisibleMethods
                        .Where(m =&amp;gt; t.Context.GetTestMethodResult(m.TestMethod).Value.Type == TestResultType.Success)
                        .Count()
            );
&lt;span style="color:Blue"&gt;#endregion&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Xaml (ViewModel is the DataContext):&lt;/p&gt;
&lt;div style="color:Black;background-color:White"&gt;
&lt;pre&gt;&lt;span style="color:Blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515"&gt;ContentControl&lt;/span&gt; &lt;span style="color:Red"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;0,12,12,12&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;  &lt;span style="color:Red"&gt;Content&lt;/span&gt;&lt;span style="color:Blue"&gt;=&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue"&gt;{Binding Path=PassedCount.Value}&lt;/span&gt;&lt;span style="color:Black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue"&gt;/&amp;gt;&lt;/span&gt;

&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;What do you mean by the help file seems broken? Undoubtedly many things are still missing but it does work. You need a viewer for it (an HTML help 1x viewer) and it may be possible that windows blocks the helpfile (because you downloaded it from the internet). You&amp;nbsp;may need to&amp;nbsp;right-mouse-click on it, select properties and click 'Unblock' on the 'General' tab.&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;
&lt;p&gt;Regs,&lt;/p&gt;
&lt;p&gt;THomas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>throb</author><pubDate>Thu, 27 Aug 2009 17:26:51 GMT</pubDate><guid isPermaLink="false">New Post: Use with Silverlight project 20090827052651P</guid></item></channel></rss>