Question: The Password property of the `PasswordBox` element is not a `DependencyObject` so cannot be bound (there is no Text property). Capturing the password as the user types is possible by attaching a message to the `PasswordChanged` event, passing the source and grabbing it in the view model. However the lack of binding means there no opportunity to set `ValidatesOnDataErrors=True` so the `IDataErrorInfo` methods are never call meaning any error template is never activated. Anyone know how to resolve this? That is, is there another way to have an element invoke a call to the view model for the `IDataErrorInfo` indexer?

One legitimate question might be why would you want to validate a password. 

Two reasons: 

1) To let the user know the password is required.

2) to let the user know if the password and password confirmation are the same.

Answer: 
There's nothing wrong with calling the defaults wherever you need it. It's a singleton anyway.

If you put it into your app delegate you'll just be calling into that the same way to get the NSUserDefaults.

If you want to initialise the defaults for your app - the place to do that is in the `+initialize` method of your app delegate.
A nice way to do user defaults is to create your own `PFXDefaults` class (replace `PFX` with your favorite prefix) which has methods for accessing and mutating the values that you care about. This allows you to write

```
[[PFXDefaults sharedDefaults] setUserName:@"Nate"];

```

rather than

```
[[NSUserDefaults] setObject:@"Nate" forKey:@"userName"];

```

It is often convenient to make this class a prefix, or, barring that, a visible (declared in the `.h` file) property on your app delegate.

The `PFXDefaults` interface would look something like

```
@interface PFXDefaults : NSObject

@property (nonatomic) NSString *userName;

@end

```

and the implementation would look something like

```
static NSString * const PFXDefaultUserNameKey = @"PFXDefaultUserNameKey";

@implementation PFXDefaults

- (void)setUserAge:(NSString *)userName
{
    [[NSUserDefaults standardUserDefaults] setObject:userName forKey:PFXDefaultUserNameKey];
}

- (NSInteger)userAge
{
    return [[NSUserDefaults standardUserDefaults] stringForKey:PFXDefaultUserNameKey];
}

@end

```