Làm thế nào tôi có thể đặt DataContext trên lưới điện của tôi trong XAML, thay vì trong các nhà xây dựng?Silverlight - Thiết DataContext trong XAML hơn là trong xây dựng?
Dưới đây là cách tôi làm điều đó trong các nhà xây dựng (LayoutRoot là XAML Lưới được định nghĩa trong XAML):
this.LayoutRoot.DataContext = this.HPVM;
Tôi muốn làm điều đó ngay trong XAML, nhưng tôi không biết làm thế nào để tham chiếu đối tượng HPVM trong XAML. HPVM là tài sản công khai trên lớp USerControl.
Nó hoạt động tốt như đã liệt kê ở trên, nhưng một lần nữa, tôi chỉ muốn biết làm thế nào để thuộc tính của lớp UserControl trong XAML, chứ không phải lúc nào cũng cần phải làm điều đó trong mã.
Dưới đây là tất cả các mã liên quan:
<UserControl x:Class="SilverlightApplication1.SLHolePattern" x:Name="HolePatternsControl"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
xmlns:local="clr-namespace:SilverlightApplication1"
xmlns:GeoPatterns="clr-namespace:GeoPatterns"
Height="700">
<UserControl.Resources>
...
Và đây là nhà xây dựng của tôi, nơi DataContext hiện đang thiết lập:
namespace SilverlightApplication1
{
public partial class SLHolePattern : UserControl, INotifyPropertyChanged
{
public HolePatternsViewModel HPVM;
public SLHolePattern()
{
InitializeComponent();
this.HPVM=new HolePatternsViewModel();
this.LayoutRoot.DataContext = this.HPVM;
...more code here
}
Tất cả đều hoạt động tốt, nhưng tôi chỉ muốn tìm hiểu làm thế nào để đặt DataContext trong XAML, không phải trong mã.
Nếu tôi khởi tạo lớp ViewModel trong XAML, tôi vẫn có thể tham khảo trong hàm dựng mã phía sau không? Lý do tôi hỏi là tôi hiện đang thiết lập một số giá trị trên ViewModel trong hàm dựng trước khi biểu mẫu được hiển thị cho người dùng. – MattSlay
Có, bạn có thể. Bạn có thể làm như sau: var aCustomer = this.Resources ["Cust"] làm Khách hàng; aCustomer.Name = "abc"; – Klinger
Tôi quên thêm thuộc tính x: Tên. x: Các công việc chính trong XAML và x: Tên làm cho đối tượng hiển thị với mã. – Klinger