Trong một trong những ứng dụng tôi đang làm việc tôi đã tìm thấy mã này -Mục đích của việc sử dụng FrameworkElementFactory
public class MatrixCellTemplate : ColumnDataTemplate<MatrixCellContainer>
{
}
public class ColumnDataTemplate<T> : DataTemplate where T : FrameworkElement
{
public ColumnDataTemplate()
{
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(T));
VisualTree = factory;
}
}
MatrixCellTemplate
này được sử dụng để thiết lập các CellTemplate
của một tùy chỉnh DataGridTemplateColumn
(sau này được bổ sung vào DataGrid.Columns
bộ sưu tập) như thế này -
<DataGridTemplateColumn.CellTemplate>
<Matrix:MatrixCellTemplate />
</DataGridTemplateColumn.CellTemplate>
tôi không chắc chắn lợi ích của việc sử dụng FrameworkElementFactory
này và những gì vấn đề tôi có thể phải đối mặt nếu tôi trực tiếp sử dụng MatrixCellContainer
như mẫu di động là gì -
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Matrix:MatrixCellContainer>
</Matrix:MatrixCellContainer>
</DataTemplate>
<!--<Matrix:MatrixCellTemplate />-->
</DataGridTemplateColumn.CellTemplate>
Cảm ơn H.B., +1 cho thông tin không được dùng nữa. Tôi vẫn sẽ tìm cách để biết trong trường hợp nào nó có ý nghĩa để sử dụng FrameworkElementFactory với DataGrid. – akjoshi
Một trong những mục đích là hiệu suất. Nếu bạn có nhiều điều khiển với các mẫu phức tạp, việc tạo các điều khiển từ XAML chậm hơn nhiều so với việc tạo mã. – TcKs
@TcKs: Chỉ cho tôi dữ liệu thực nghiệm của bạn vì tôi sẽ không tin nó nếu không, chúng ta đang nói về các mẫu ở đây, các điều khiển không được khởi tạo cho đến khi cần thiết. Nếu bạn định nghĩa một khuôn mẫu trong mã hoặc trong XAML không quan trọng chút nào, cả hai đều được biên dịch trừ khi bạn sử dụng XAML rỗng không chắc chắn. –