Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 12:16
    GeertvanHorrik commented #1839
  • Sep 15 10:41

    delete-merged-branch[bot] on nuget

    (compare)

  • Sep 15 10:41

    GeertvanHorrik on develop

    Bump Verify.NUnit from 11.26.0 … Merge pull request #1861 from C… (compare)

  • Sep 15 10:41
    GeertvanHorrik closed #1861
  • Sep 15 10:19
    dependabot[bot] labeled #1861
  • Sep 15 10:19
    dependabot[bot] opened #1861
  • Sep 15 10:19

    dependabot[bot] on nuget

    Bump Verify.NUnit from 11.26.0 … (compare)

  • Sep 14 14:30
    xaecors commented #1839
  • Sep 14 14:29
    xaecors commented #1839
  • Sep 13 12:14

    delete-merged-branch[bot] on nuget

    (compare)

  • Sep 13 12:14

    GeertvanHorrik on develop

    Bump Verify.NUnit from 11.25.0 … Merge pull request #1860 from C… (compare)

  • Sep 13 12:14
    GeertvanHorrik closed #1860
  • Sep 13 10:22
    dependabot[bot] synchronize #1860
  • Sep 13 10:22

    dependabot[bot] on nuget

    Bump Verify.NUnit from 11.25.0 … (compare)

  • Sep 13 10:22
    dependabot[bot] edited #1860
  • Sep 13 10:21
    dependabot[bot] edited #1860
  • Sep 13 10:20

    delete-merged-branch[bot] on nuget

    (compare)

  • Sep 13 10:20

    github-actions[bot] on develop

    Bump Fody from 6.5.2 to 6.5.3 … Merge pull request #1859 from C… (compare)

  • Sep 13 10:20
    github-actions[bot] closed #1859
  • Sep 13 10:20
    dependabot[bot] labeled #1860
tm1k
@tm1k
hm, I don't have a real idea how to let the wizard launch another one, but I'll try to do it dynamically. Previously, I did this by an addPage-block in the wizard's main file
Geert van Horrik
@GeertvanHorrik
You can launch a wizard from any VM, including a wizard page VM.
tm1k
@tm1k
Hm, do I need to do anything to update the wizard view after I dynamically added new pages? It still consists of the first page, no "Next" button showing up...
tm1k
@tm1k
When I add some pages before, the next button is displayed and I can navigate through the dynamically added pages, but the numbers in the top of the wizard do not change
Geert van Horrik
@GeertvanHorrik
I will need more than text to think of a good solution. You cannot dynamically add pages once the wizard is instantiated. I don't believe the wizard component actively updates the breadcrumb, etc.
tm1k
@tm1k
I solved it like this: I add the absolutely necessary pages in the Wizard initialization and add the two pages per cycle which are entered by the user. This works, I am satisfied with this solution by now
tm1k
@tm1k
One more question: Is there a callback that I can use when Next and Previous are pressed?
Geert van Horrik
@GeertvanHorrik
@tm1k could you send me an email at firstname @ catenalogic.com? Would like to ask you a few questions.
Ghost
@ghost~5da242acd73408ce4fcdaa63
Anyone have any insights on why objects present within an FastObservableCollection (that are based off ValidatableModelBase) are not getting garbage collected? The collections do not have events attached to them but if I null out the property it will GC the objects in the collection (sometimes).
Geert van Horrik
@GeertvanHorrik
Are they bound to VM's in any way? The collection and change wrapper could be subscribing here, but it should all be weak events.
And are you using .NET Core? It has a slightly different way of GC (we had to fix all the unit tests since we cannot rely on objects being collected by GC.Collect)
Ghost
@ghost~5da242acd73408ce4fcdaa63
Full .NET Framwork (would love to move to Core but there are blockers preventing this). These are basically collections bound to the ItemsSource dependency property of a RadGridView.
I have the feeling it may be the way I’m handling instantiation and population however.
Geert van Horrik
@GeertvanHorrik
There is no other object referencing this object? And it only happens in FastObservableCollection?
Just checked the code for FOC, don't see any subscriptions there. Maybe it's the RAD grid subscribing to property changed of the objects inside collection?
Ghost
@ghost~5da242acd73408ce4fcdaa63
That’s the issue, I cannot seem to track down the root culprit and dotMemory is not showing anything that pops out. My only other route I have left to try is changing how the collection is instantiated and populated.
Geert van Horrik
@GeertvanHorrik

weird, I would expect dotMemory to show some sort of relation, even if it's via an event subscription.

Just a few double checks

  1. Is the collection cleared (are items removed from the list)?
  2. Is the collection no longer part of a VM?
  3. Is the VM closed / no longer attached to a view?
Ghost
@ghost~5da242acd73408ce4fcdaa63
Yeah so would I but it hasn't been rather forthcoming. But as an example:
  1. I have a ViewModel for the sake of this example called GridViewModel<TDomainModel>
  2. The ViewModel has a member property called Rows which is a FastObservableCollection<TDomainModel>
  3. Rows is an inline initialization -- public FastObservableCollection<TDomainModel> Rows { get; } = new FastObservableCollection<TDomainModel>
  4. Items are retrieved from an external source and added to Rows in InitializeAsync via AddItems
  5. The property Rows is cleared during OnClosingAsync()
  6. dotMemory shows that all the objects within Rows survived the closing and disposing of the ViewModel along with their ValidationContext
Geert van Horrik
@GeertvanHorrik
4 sounds alarm bells in my head
are you sure the external sourec is not holding it somehow?
Ghost
@ghost~5da242acd73408ce4fcdaa63
So 4 would be a manager class that handles mediation between the VM and the DAL. It basically does the query to the DB and converts the entity model to a domain model. You may be right though I should probably have the ViewModel discard the property that holds the manager class on dispose
I'll try that out on Monday and see what happens
Ghost
@ghost~5da242acd73408ce4fcdaa63
@GeertvanHorrik so I tried that, looks like something is still holding onto the object though
Geert van Horrik
@GeertvanHorrik
hmmm, will give it a thought, about to turn off the pc for the night. Let's discuss on Monday to see if we can come up with something
Ghost
@ghost~5da242acd73408ce4fcdaa63
Until then, here's a snapshot from dotMemory: https://i.imgur.com/ryXC0Dx.png
thanks for the input though
Geert van Horrik
@GeertvanHorrik
it's not the virtualization of the RadGrid?
Can you try a different grid (just the default one)?
Ghost
@ghost~5da242acd73408ce4fcdaa63
virtualization is not on for that particular grid (it doesn't get big enough)
It's most likely a behavioral issue with Telerik. I'll dig more on Monday.
Ghost
@ghost~5da242acd73408ce4fcdaa63
@GeertvanHorrik Just an FYI when you read this next, I found the ultimate issue. The ViewModels in question were not having their dispose methods called due to an implementation that got missed. So we're all good
Geert van Horrik
@GeertvanHorrik
Nice, glad you solved it, thanks for the update
Ghost
@ghost~5da242acd73408ce4fcdaa63
@GeertvanHorrik What are your thoughts on possibly creating an FastObservableItemCollection that inherits off FastObservableCollection but exposes an ItemChanged event? I'm pondering implementing one to throw out some rx.net extension methods that are being used
Geert van Horrik
@GeertvanHorrik
ItemChanged as in a property of an item in the collection has changed?
Ghost
@ghost~5da242acd73408ce4fcdaa63
yes
for the cases where the object within the collection is also observable
Geert van Horrik
@GeertvanHorrik
can you wrap the collection in the wrapper that is already there? I always forget the naem
ChangeNotificationWrapper or something like that
Ghost
@ghost~5da242acd73408ce4fcdaa63
Oh right you have that wrapper
I forgot about that
Geert van Horrik
@GeertvanHorrik
not sure though how it behaves in combination with the FOC
Ghost
@ghost~5da242acd73408ce4fcdaa63
I'd probably not use the CollectionChanged event within it but CollectionItemPropertyChanged is what I actually need so this eliminates an extension method that has a lot of boiler plate
rfuzzo
@rfuzzo

Hello! I have a question about MVVM patterns and ribbons in Catel+Orchestra+Fluent.
I want to have my ribbonView to have its own viewmodel, as does the mainview orchestra uses.

  • I'm using ApplicationCommandContainers as much as possible for the ribbon, which works great. so far so good
  • but there are instances where the RibbonViewModel should have access to the MainViewModel (contextual tabs e.g., commands targeting the mainViewModel e.g.)
  • what is the intended pattern here? is it possible to resolve a MainViewModel reference with dependency injection? (I haven't found an example for that yet).
  • the documentation here doesn't quite fit I think, since I'm not talking models really: https://catelproject.atlassian.net/wiki/spaces/CTL/pages/1409119/Introduction+to+the+nested+user+controls+problem

thank you in advance!

Geert van Horrik
@GeertvanHorrik
It's better not to directly rely on other vm's to be alive. To share data / state, it's best to use services (long-living objects where vm's are short living objects)
if you need commands to be existing on other vms, it's best to register a ComposeCommand. In the main vm, you can Add an action to that composite VM and unregister it when the vm gets closed. This way, the command is a long-living object (always available), but vms can subscribe to it. A great example is Refresh, where you have 1 Refresh command, and each VM that has refresh capabilities can add an action to this composite command.
rfuzzo
@rfuzzo

hmm thank you! yes, the service approach is definitely better. (and thanks, I'll have a look at ComposeCommands as well! )
I just had a look at the CsvTextEditor where a lot of the action also happens in the IProjectManager and Command containers - this is probably worth looking into)

my questions comes from trying to implement Dirkster99.AvalonDock+Mlib theming in the Orc+Fluent app. not as easy as I had thought :D
they had a ThemeViewModel inside the MainViewModel. I should probably move the themeing into a Service tho...

anyways. thanks for the quick reply!
Geert van Horrik
@GeertvanHorrik
You might want to look into Orc.Theming for tehming
rfuzzo
@rfuzzo
ohh thank you! that might be the better approach...