Click or drag to resize
ViewModel
C#
internal sealed class MainWindowViewModel : NotifyPropertyChanged
{
    public string Title { get { ... } }

    public string ListeningPort { get { ... } set { ... } }

    public string ProviderHostName { get { ... } set { ... } }

    public string ProviderPort { get { ... } set { ... } }

    public string LogFolder { get { ... } set { ... } }

    public bool? AutoScrollToMostRecentEvent { get { ... } set { ... } }

    public bool CanEditSettings { get { ... } }

    public bool CanStart { get { ... } }

    public void Start() { ... }

    public bool CanStop { get { ... } }

    public void Stop() { ... }

    public void SaveSettings() { ... }

    public ConnectionViewModel ConsumerConnection { get { ... } }

    public ConnectionViewModel ProviderConnection { get { ... } }

    public ReadOnlyObservableCollection<Event> Events { get { ... } }

    public LogEntry SelectedEvent { get { ... } set { ... } }

    public FlowDocument SelectedEventDetail { get { ... } private set { ... } }

    public bool CanLoadFullEventDetail { get { ... } private set { ... } }

    public void LoadFullEventDetail() { ... }

    public event EventHandler<ScrollEventIntoViewEventArgs> ScrollEventIntoView;

    internal MainWindowViewModel(Settings settings) { ... }
}
C#
internal sealed class ConnectionViewModel : NotifyPropertyChanged
{
    public string ConnectionCount { get { ... } }

    public string BytesReceived { get { ... } }

    public string SecondsSinceLastReceived { get { ... } }
}

A few things are of note here, please see the following subtopics for more information: