Tôi đang cố thêm các sự kiện và phần tử theo chương trình vào DataTemplate trong ứng dụng Silverlight 3.0. Tôi có một điều khiển người dùng với một thuộc tính phụ thuộc mà tôi muốn lấy mẫu được thiết lập, tinh chỉnh nó, và sau đó thiết lập phiên bản sửa đổi để kiểm soát bên trong.Làm thế nào để lập trình sửa đổi một DataTemplate?
Ý tưởng tôi có là lấy DataTemplate đi kèm, đọc XAML của nó, tinh chỉnh nó và sau đó sử dụng XamlReader để tạo một DataTemplate đã sửa đổi mà sau đó có thể được đặt thành điều khiển bên trong. Vấn đề với cách tiếp cận này là tôi không biết làm thế nào để có được những XAML từ mẫu originalal Ví dụ (nếu nó thậm chí còn có thể.):
protected virtual void OnItemTemplateChanged(DependencyPropertyChangedEventArgs e)
{
// Get the original Xaml from the set template
//string originalXaml = ???
// Modify the template
string newXaml = originalXaml.Replace("foo", "bar"); // for example
// Create a new template from the modified XAML
DataTemplate newTemplate = (DataTemplate)XamlReader.Load(newXaml);
// Update the inner template
this._childDropdown.ItemTemplate = newTemplate;
}
Không ai biết một trong hai: 1) nếu có một cách để đọc XAML gốc, hoặc 2) một cách tiếp cận khác để sửa đổi DataTemplate theo chương trình.
Cảm ơn,
Tôi (miễn cưỡng) đã làm lại dự án của mình để nó không yêu cầu thao tác của DataTemplate. Nó không phải những gì tôi muốn nhưng ít nhất tôi không lãng phí thêm thời gian để cố gắng làm điều này. Cảm ơn, tôi hy vọng một phiên bản tương lai của Silverlight sẽ cho phép một số thao tác có lập trình của DataTemplate. –
Tôi nghĩ rằng những gì tôi muốn xem như khả năng thay thế một ItemContainerGenerator ItemsControl với máy phát tùy chỉnh mà chúng tôi không thể vào lúc này, tôi sẽ phải tìm kiếm SL4 xem nếu nó cho phép điều đó. – AnthonyWJones