これはいくつかの質問です。別々に聞くべきです。
ログインを別ウィンドウにする方法
プロジェクトに新しいウィンドウを追加します。そこにログイン画面を実装します。アプリの起動時 (または適切なタイミングで) に新しいウィンドウを表示します。
ログインエラーメッセージの表示方法
画面内の「ログイン」ボタンをクリックすると、ログインが実行されます。失敗した場合 (例外が発生した場合)、ダイアログ ボックスを表示します。それ以外の場合は、ログイン ウィンドウを閉じます。
ユーザーのログイン情報を保存する方法
このような情報は、ファイルに書き込むのではなく、保護されたストアに保存する必要があります。ログインに成功したら保存します。アプリケーションの起動時にロードします。
キャラカウントダウンのやり方
ユーザー コントロールまたはウィンドウに新しい "CharactersLeft" 依存関係プロパティを追加します。Text プロパティに PropertyChangedCallback を追加します (1 つあると仮定します。それは DependencyProperty である必要があり、TextBox はそれにバインドする必要があります)。PropertyChangedCallback で、CharactersLeft 値を更新します。TextBlock を CharactersLeft 値にバインドします。
CharactersLeft が負の場合に投稿を防止する方法
ICommand を使用している場合は、CanExecute を実装します。RoutedCommand を使用している場合は、OnCanExecute を実装します。ボタンのクリックを直接処理している場合は、代わりにコマンドを使用することを検討するか、ボタン ボタンにトリガーを設定して、CharactersLeft が 0 未満の場合は常に無効になるようにします。(これには IValueConverter が必要です。または、別のプロパティを持つこともできます。)