Мне нужно изменить мои XAML
элементы по коду.Мне нужно заменить оригинальный content
новым content
внутри ScrollViewer
"XAML_ScrollViewer".Простой пример XAML
кода.
<ScrollViewer x:Name="XAML_ScrollViewer">
<ListView x:Name="XAML_ListView">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:SomeInformation">
<Grid>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollViewer>
Для этого я использую следующий код.Пока все хорошо.Новый content
появляется так, как должен.
C #
//SourceElementParent = XAML_ScrollViewer
//GET PRESENT CONTENT
FrameworkElement ControlOldContent = (SourceElementParent as ContentPresenter).Content as FrameworkElement;
//CREATE NEW GRID
Grid NewParentGrid = new Grid();
//USE NEW GRID AS CONTENT
(SourceElementParent as ContentPresenter).Content = NewParentGrid;
//ADD SOME ELEMENT 01
NewParentGrid.Children.Add(XAMLElement_01);
//ADD SOME ELEMENT 02
NewParentGrid.Children.Add(XAMLElement_02);
//ADD OLD CONTENTS INTO A NEW GRID
NewParentGrid.Children.Add(ControlOldContent );
Но когда мне нужно восстановить исходный content
, я не могу этого сделать.Следующий код работает, НО созданный Grid
внутри ScrollViewer
должен остаться.
C #
//CLEAR ALL CHILDREN OF THE GRID
((SourceElementParent as ContentPresenter).Content as Grid).Children.Clear();
//ADD OLD CONTENT TO THE GRID
((SourceElementParent as ContentPresenter).Content as Grid).Children.Add(ControlOldContent);
Поскольку я хочу восстановить элемент управления ScrollViewer
в старом состоянии (content
как это было до какой-либо модификации) Мне также нужно избавиться от Grid
, который я создал ранее.Но если я это сделаю, я получу exception
, если я изменю размер окна с помощью мыши.Если я не изменяю размер, все выглядит хорошо.
Я получаю следующее исключение:
e = {Windows.UI.Xaml.UnhandledExceptionEventArgs} Exception = {"Недопустимый указатель \ r \ n \r \ nНеверный указатель \ r \ n "}
Я пытался использовать следующий код для восстановления contents
, но это не удалось.
C #
//CLEAR ALL CHILDREN OF GRID
((SourceElementParent as ContentPresenter).Content as Grid).Children.Clear();
//ADD ORIGINAL CONTENT
(SourceElementParent as ContentPresenter).Content = ControlOldContent;
Итак, любойХорошие советы, как решить эту проблему?