Question: I want an animation modal (loading please wait) and when the page fully loads it disappears?

Answer: 
Well, the way ***I*** would do it...

```
Public Class Repository: ObservableCollection<RepositoryItem>
{
}

public class RepositoryItem
    {
        public string main {get; set};
        public string clean {get; set};
        public int curParCount {get; set};
        public int totalCount {get; set};
        public int parStart {get; set};
        public int partialStart {get; set};
        public double scrollPos {get; set};
        public int selectionStart {get; set};
        public int selectionEnd {get; set};
        public string[] status {get; };
    }     

```

Basically, this is a class of RepositoryItem (which holds your data, and any functions that you may need to utilize to IMPACT that data) and then a class Repository, which inherits the ObservableCollection class, typing it to the RepositoryItem.
There are a few things that I would change in order to follow best practices.

First, I would address what the [separation of concerns](http://en.wikipedia.org/wiki/Separation_of_concerns) issue you have. The Rep struct doesn't need to be a nested class, in my opinion, I would remove it, like so (and also call it something else):

```
class Repository 
{ 
    public static Rep[] rep = new Rep[6]; 
}

public struct RepositoryItem
{
    public string main; 
    public string clean; 
    public int curParCount; 
    public int totalCount; 
    public int parStart; 
    public int partialStart; 
    public double scrollPos; 
    public int selectionStart; 
    public int selectionEnd; 
    public string[] status; 
}

```

Now, if you look, you have a Repository class that does nothing but hold the array. Since that is the case, you can effectively eliminate that and create your array as a variable and store that anywhere you wish.

That leaves the RepositoryItem structure. I would first address the issues that violate the [design guidelines for class libraries](http://msdn.microsoft.com/en-us/library/czefa0ke(VS.71).aspx). The biggest offense here is the naming of the fields, they should be [Pascal-cased](http://blogs.msdn.com/brada/archive/2004/02/03/67024.aspx):

```
public struct RepositoryItem
{
    public string Main; 
    public string Clean; 
    public int CurParCount; 
    public int TotalCount; 
    public int ParStart; 
    public int PartialStart; 
    public double ScrollPos; 
    public int SelectionStart; 
    public int SelectionEnd; 
    public string[] Status; 
}

```

You should also give your field names more *meaningful* names. While "Pos" might be obvious to you, it might not be obvious to others. "ScrollPosition" might be a better name than "ScrollPos".

Now, beyond that, it gets a little more subjective. The questions you have to ask are, should this be a structure (if you want copy-by-value semantics, then great, it should be) or a class? Also, should the fields be read only (if so, this should be a class and you should have a constructor which takes all the values)?

Also, consider the implications if the properties/fields are read-only. If the Status field is read only, consider exposing it as an IEnumerable instead of an array, as it will give you much more flexibility in assigning the value as opposed to forcing the contiguous memory that arrays demand (also, you will protect from setting elements in the array, since the reference to the array is read-only, not the elements in the array themselves).