My recommendation is to start using the newer syntax (easier to read)
component 'CustomerDetailsView' is ComplaintView < IView:
lifestyle Transient
The problem you are having is that you are creating instances of the child
views directly. You need to register child views as above and use service
overrides to specify them
ChildViews = ( @childView1, @childView2)
You can look at sample Windor2.boo to get full syntax
On Tue, Feb 17, 2009 at 8:02 AM, Andrew <[email protected]> wrote:
>
> Hi,
>
> I'm using Binsor to compose views for a windows forms type
> application. We have an IView interface and a bunch of standard
> implementations like FlowLayoutView, PanelView etc and then custom
> views like CustomerView. So, for example, we might have a boo file
> like:
>
>
> complaint_view = Component("CustomerDetailsView", IView,
> ComplaintView, LifestyleType.Transient)
>
> customer_issues_view = Component("CustomerIssuesView", IView,
> CustomerIssuesView, LifestyleType.Transient
> ... some properties not relevant here
> )
>
> Component("CustomerAndIssuesView", IView, FlowLayoutPanelView,
> LifestyleType.Transient,
> ChildViews: (
> GroupBoxView(
> Text: "Customer Details",
> ChildViews: (
> ViewRef(ViewName: "CustomerDetailsView"),
> )
> ) as IView,
> TabControlView(
> ChildViews: (
> GroupBoxView(
> Text: "Customer Issues",
> ChildViews: (
> ViewRef(ViewName:
> "AnotherView"),
> )
> ) as IView,
> )
> )
> )
> )
>
>
> So, as you can see, I'm trying to define a composite view called
> "CustomerAndIssuesView" of type FlowLayoutPanelView. This type has a
> 'ChildViews' property which is defined as a property of type IView[].
> In the config, I'd like to build up the child views as you see above,
> so it flows naturally.
>
> This kinda works, however there's a snag: Every time I resolve
> "CustomerAndIssuesView", I get the same child view instances. E.g.
> from example above, I get the same GroupBoxView and TabControlView
> instances. This causes me grief as I need these to be newly
> instantiated each time the parent component is resolved.
>
> So, my problem is that these are just read and instantiated once and
> then reused when the dependencies of the parent component are
> requested. I've had a look through the Binsor source, and am not
> really sure where I should start tbh.
>
> One idea I've had is to make all the view types implement ICloneable
> and then do some sort of custom castle ComponentDescriptor that can
> spot this and just call Clone() when returning dependencies for
> component
>
> However, as I'm a complete noob with Binsor, I was hoping to get this
> group's opinion before starting down this path. Is there an easier
> way?
>
> Thanks,
> Andrew
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Rhino Tools Dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---