在 MVVM 中转换为另一个 属性

Casting to another property in MVVM

我有一个结构如下的组合框:

  public class PersonDataQueryField
  {
        public string FriendlyName { get; set; }
        public IList<string> XPaths { get; set; }
        public Type DataType { get; set; }
  }

这个 class 的列表存在于我的 ViewModel 中,并与 DisplayMemeberPath=FriendlyName 绑定到组合框。我的视图中有几个DataTemplates,它们会根据Combobox中选择的DataType触发来填充ContentControl。在此组合框的右侧,存在一个 TextBox,用户可以在其中输入 SearchQuery。 Text 属性 是 object 类型,意味着当用户按下 "Search" 时被转换为 SelectedPersonDataQueryField.DataType

var searchQuery = (SelectedSearchQueryParameter.DataType) SearchQuery;

这是不允许的,因为 SelectedSearchQueryParameterProperty 而不是 Type,但 DataTypeType。我怎样才能做到这一点?

我同意乔恩的观点。虽然,这是这样的:

dynamic searchQuery = Convert.ChangeType(SearchQuery, 
                           SelectedSearchQueryParameter.DataType);

但是为什么,下一步是什么 :p?