使用模板10的UWP中的訂單窗體將產品添加到訂單中。該錯誤是在UWP應用程序中的ViewModel上找不到屬性
Invalid binding path 'OrderViewModel.FindProduct_TextChanged' : Property 'OrderViewModel' can't be found on type 'ProductViewModel'
相關的XAML代碼段是
<Page.DataContext>
<ViewModels:MainPageViewModel x:Name="OrderViewModel" />
</Page.DataContext>
<GridView ItemsSource="{x:Bind OrderViewModel.Products, Mode=TwoWay}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="ViewModels:ProductViewModel" >
<AutoSuggestBox
Name="ProductAutoSuggestBox"
TextMemberPath="{x:Bind ItemCode, Mode=TwoWay}"
TextChanged="{x:Bind OrderViewModel.FindProduct_TextChanged}">
</AutoSuggestBox>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
從OrderViewModel和ProductViewModel
namespace ViewModels
{
public class OrderViewModel : ViewModelBase
{
public ObservableCollection<Product> Products { get; set; } = new ObservableCollection<Product>();
public void FindProduct_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{ ... }
}
public class ProductViewModel : ViewModelBase
{
string _ItemCode = default(string);
public string ItemCode { get { return _ItemCode; } set { Set(ref _ItemCode, value); } }
public ProductViewModel()
{
}
}
}
相關片段如何以正確的OrderViewModel
參考FindProduct_TextChanged
從GridView的DataTemplate參考ProductViewModel
?
您使用'OrderViewModel.Products'作爲ItemsSource,這意味着'x:DataType'必須是'Product'並且'FindProduct_TextChanged'方法必須放入它。 – tao
謝謝@tao。我不太清楚你的意思。 'Product'不是'OrderViewModel'的成員,但'Products'是'OrderViewModel'的成員。 'FindProduct_TextChanged'更新'OrderViewModel.Products',所以我看不到如何將它放在除OrderViewModel之外的任何地方。或者我誤解了?你能提供一個代碼片段來說明你的意思嗎? – Vague