A: 

Interesting. I've solved a similar dilemma by using an IValueConverter in an unusual way: I created a "VisibilityConverter" that tells a control whether it ought to appear. In the case of your example you would have two of them: one Convert method would return ((PersonInfo)o).Name == "Joe" ? Visibility.Visible : Visibility.Collapsed; and the other would do the opposite. Then bind UserControl1's visibility to one VisibilityConverter and bind UserControl2's visibility to the other and walla, they swap out based on the data.

Eric Mickelsen
Thanks for the reply! It's funny that you came to this conclusion as well. I ended up going down that path before posting this question- I figured there had to be a solution that let me swap these things out in an easier manner. I used a single valueconverter that accepted a binding parameter to know which control had called it, but I like your separate validator approach better. Just glad to know I wasn't completely off base! Thanks again
Landstander