在 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;
这是不允许的,因为 SelectedSearchQueryParameter
是 Property
而不是 Type
,但 DataType
是 Type
。我怎样才能做到这一点?
我同意乔恩的观点。虽然,这是这样的:
dynamic searchQuery = Convert.ChangeType(SearchQuery,
SelectedSearchQueryParameter.DataType);
但是为什么,下一步是什么 :p?
我有一个结构如下的组合框:
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;
这是不允许的,因为 SelectedSearchQueryParameter
是 Property
而不是 Type
,但 DataType
是 Type
。我怎样才能做到这一点?
我同意乔恩的观点。虽然,这是这样的:
dynamic searchQuery = Convert.ChangeType(SearchQuery,
SelectedSearchQueryParameter.DataType);
但是为什么,下一步是什么 :p?