Вот простой пример: запустите VS2010 или VS2008, новый проект WPF (.Net Framework 3.5 sp1), добавьте пустую страницу (Page1.xaml) в проект.Frame.Content, операция назначения не работает?
Код остальное в MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
TestFrameContent();
}
private void TestFrameContent()
{
FrameworkElement fe = Activator.CreateInstance(Type.GetType("WpfFrameContentProblem.Page1")) as FrameworkElement;
Frame frmContainer = new Frame();
frmContainer.Content = fe;
Debug.Assert(frmContainer.Content != null, "Content is null");
}
}
Запустите приложение, он потерпит неудачу на Debug.Assert, показывают, что frmContainer.Content == NULL.
Это действительно загадка для меня, что простое назначение не удастся. Кто угодно?
спасибо. Я предполагаю, что в этом случае я должен использовать ContentControl в качестве контейнера FrameworkElemnt. Скажите, пожалуйста, ContentControl.Content = x - это простое назначение :) – neolei
@ sun1991: Ну, это назначение свойства зависимостей, поэтому я все равно не назвал бы его «простым». У вас может быть двусторонняя привязка к свойству Content, и обновление будет перенесено на другой объект. ContentControl не выполняет принудительное значение стоимости, например Frame, поэтому он должен по крайней мере * действовать *, как простое присвоение свойств :). – Quartermeister