Tôi đang sử dụng WPF với mẫu Model-View-ViewModel. Do đó, mã của tôi phía sau các tệp (.xaml.cs) đều trống, ngoại trừ hàm tạo với một lệnh gọi tới InitializeComponent. Do đó, đối với mọi tệp .xaml, tôi có một tệp .xaml.cs phù hợp, vô ích.XAML không có mã .xaml.cs phía sau các tệp
Tôi thề là tôi đã đọc ở đâu đó rằng nếu mã phía sau tệp trống, ngoại trừ hàm tạo, có cách xóa hoàn toàn tệp khỏi dự án. Sau khi tìm kiếm trên net, có vẻ như rằng cách thích hợp để làm điều này là sử dụng 'x: Subclass' thuộc tính:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
x:Class="MyNamespace.MyClass"
x:Subclass="UserControl"
d:DesignWidth="700" d:DesignHeight="500">
này nào sau đây trong tập tin được tạo .g.cs:
- Xoá bộ sửa đổi lớp 'một phần' trên MyClass.
- Thêm lớp 'UserControl' vào danh sách lớp con của nó.
Có vẻ hoàn hảo. Thật vậy, nếu bạn vẫn có tệp .xaml.cs trong bản dựng, nó không còn biên dịch vì phần thiếu - vì vậy tôi nghĩ điều này phải đúng. Tuy nhiên, nếu tôi loại bỏ các tập tin thừa từ xây dựng và chạy, kiểm soát không được khởi tạo một cách chính xác (nó là trống). Đây là, tôi đoán, bởi vì InitializeComponent() không được gọi. Tôi thấy InitializeComponent không phải là ảo, do đó, có vẻ như sẽ không có cách nào để lớp cơ sở gọi nó (thiếu sử dụng sự phản chiếu).
Tôi có thiếu gì đó không?
Cảm ơn!
Eric
Cảm ơn Scott. Đây chắc chắn là một cách tiếp cận tốt hơn. – Eric
+1 Tôi cũng sử dụng cách này. Nó hoạt động rất tuyệt, nó gần giống như ma thuật. –
Lưu ý: có sẵn trong WPF, nhưng không có trong Silverlight. –
MrSharps