No. FrameworkElement.DatatContext
là thuộc tính phụ thuộc cho phép ràng buộc dữ liệu thuộc loại object
.
Như được chỉ ra bởi những người khác, bạn có thể chỉ định loại mong đợi là DataContext
cho mẫu đặc biệt được gọi là DataTemplate
. Nhiều điều khiển như ItemsControl
, ControlControl
cung cấp quyền truy cập vào DataTemplates để cho phép bạn đặt kỳ vọng của biểu diễn trực quan về loại DataContext.
Bryan đúng, anh ấy không kiểm tra mã của mình.
Việc áp dụng đúng đắn về một DataTemplate gõ trông như thế này:
<Window>
<Window.Resources>
<DataTemplate x:Key="TypedTemplate" DataType="{x:Type myViewModel}">
...
</DataTemplate>
</Window.Resources>
<ContentControl Content="{Binding}" ContentTemplate="{StaticResource TypedTemplate}" />
</Window>
ContentPresenter thừa hưởng trực tiếp từ FrameworkElement và không có một tài sản Mẫu. Ngoài ra, các tài sản mẫu thường đề cập đến Control.Template loại ControlTemplate đó là một cái gì đó hoàn toàn khác với một DataTemplate.
Tôi nghĩ Bryan đang nghĩ đến số ContentControl
là một trong hai loại kiểm soát gốc (loại kia là ItemsControl
). ContentControl
thực tế được kế thừa từ Kiểm soát. Do đó chúng tôi có thể chỉ định thuộc tính Mẫu trên đó nếu chúng tôi chọn.
<Window>
<Window.Resources>
<DataTemplate x:Key="TypedTemplate" DataType="{x:Type myViewModel}">
...
</DataTemplate>
<ControlTemplate x:Key="ControlSkin" TargetType="{x:Type ContentControl}">
...
</ControlTemplate>
</Window.Resources>
<ContentControl Content="{Binding}" ContentTemplate="{StaticResource TypedTemplate}" Template="{StaticResource ControlSkin}" />
</Window>
.Net 3.5 không có DataTemplate.Thuộc tính TargetType –
@Brian Bạn nói đúng, đó là DataType. Tôi nói nó chưa được kiểm chứng. Tôi đã cập nhật câu trả lời để sửa lỗi. –