Tôi có một bộ điều khiển với các lệnh kèm theo và logic được liên tục tái sử dụng trong cùng một cách WPF. Tôi quyết định tạo một điều khiển người dùng chứa tất cả các điều khiển và logic chung.Làm thế nào để tạo ra một usercontrol với nội dung NAMED
Tuy nhiên tôi cũng cần sự kiểm soát để có thể giữ nội dung có thể được đặt tên. Tôi đã thử các cách sau:
<UserControl.ContentTemplate>
<DataTemplate>
<Button>a reused button</Button>
<ContentPresenter Content="{TemplateBinding Content}"/>
<Button>a reused button</Button>
</DataTemplate>
</UserControl.ContentTemplate>
Tuy nhiên có vẻ như bất kỳ nội dung nào được đặt bên trong điều khiển người dùng đều không thể được đặt tên. Ví dụ nếu tôi sử dụng điều khiển theo cách sau:
<lib:UserControl1>
<Button Name="buttonName">content</Button>
</lib:UserControl1>
tôi nhận được lỗi sau:
Cannot set Name attribute value 'buttonName' on element 'Button'. 'Button' is under the scope of element 'UserControl1', which already had a name registered when it was defined in another scope.
Nếu tôi loại bỏ các BUTTONNAME, sau đó nó biên dịch, tuy nhiên tôi cần để có thể tên Nội dung. Làm thế nào tôi có thể đạt được điều này?
Đây là sự trùng hợp ngẫu nhiên. Tôi vừa định hỏi câu hỏi này! Tôi có cùng một vấn đề. Bao thanh toán mô hình giao diện người dùng thông thường thành UserControl, nhưng muốn tham chiếu đến giao diện người dùng nội dung theo tên. – mackenir
Tại sao bạn không sử dụng cách ResourceDictionary? Xác định DataTemplate trong đó. Hoặc sử dụng từ khóa BasedOn để kế thừa điều khiển. Chỉ cần một số con đường tôi muốn làm theo trước khi làm code-phía sau giao diện người dùng trong WPF ... –
Anh chàng này tìm thấy một [giải pháp] (http://blog.bluecog.co.nz/archives/2007/08/27/wpf-cannot -set-name-attribute /) liên quan đến việc loại bỏ tệp XAML của kiểm soát tùy chỉnh của mình và xây dựng giao diện người dùng của kiểm soát tùy chỉnh theo lập trình. [Bài đăng trên blog] này (http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2130.entry?wa=wsignin1.0&sa=752255111) có nhiều điều để nói về chủ đề này. – mackenir