Я новичок в разработке приложений для Windows 10. Я пытаюсь встроить свой пользовательский UserControl на страницу в моем приложении. По какой-то причине содержимое полностью заменяется тем, что я помещаю внутри него на странице XAML. Чтобы дать лучшее объяснение, вот код:Как предотвратить переопределение содержимого UserControl?
AppView.xaml (контроль)
<UserControl
x:Class="Sirloin.AppView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Sirloin"
xmlns:h="using:Sirloin.Helpers">
<SplitView x:Name="splitView" DisplayMode="CompactOverlay">
<SplitView.Pane>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--The hamburger-->
<Button Click="OnHamburgerClicked" Grid.Row="0" Style="{StaticResource MenuButtonStyle}">
<Button.DataContext>
<local:MenuItem Symbol=""/>
</Button.DataContext>
</Button>
<!--Buttons just below the hamburger-->
<ListView x:Name="topView"
Grid.Row="1"
ItemTemplate="{StaticResource ListViewItemTemplate}"/>
<!--Buttons toward the bottom of the menu-->
<ListView x:Name="bottomView"
Grid.Row="3"
ItemTemplate="{StaticResource ListViewItemTemplate}"/>
</Grid>
</SplitView.Pane>
<SplitView.Content>
<!--Where I'd like the content specified in MainPage to appear-->
<Frame x:Name="frame" Background="White"/>
</SplitView.Content>
</SplitView>
</UserControl>
MainPage.xaml
<Page
x:Class="Sirloin.Example.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="using:Sirloin"
xmlns:local="using:Sirloin.Example">
<s:AppView>
<Grid Background="White">
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Hello, world!"/>
</Grid>
</s:AppView>
</Page>
Когда MainPage
делает в конструкторе VS , это похоже на то, что содержимое моего пользовательского элемента управления полностью выпотрошено и заменено тем, что указано на главной странице. Чтобы дать вам идею, вот скриншот дизайнера:
Как вы можете видеть, нет меню или SplitView
или что-то я положил в моем пользовательском элементе управления; единственное, что есть, это TextBlock
, который я указал в XAML для MainPage
.
В любом случае, почему это происходит и что я могу сделать, чтобы исправить это?
EDIT: Найдено решение, которое я искал here, но ответ Питера Duniho была принята, поскольку она обеспечивает лучшее объяснение того, что происходит.
'UserControl' является подклассом' Control', а не 'ContentControl'. Однако у него есть 'Content' dp. –
@JustinXL: да, спасибо. Я забыл, что Winrt API разделяет элементы управления содержимым, а элементы «Panel» отличаются от WPF. Тем не менее, применяется одна и та же основная проблема. –
@Peter Duniho: Я думаю, что Джеймс означает, что пользовательский контроль - это MainPage. Я думаю, он рассчитывает увидеть, что элемент управления Splitview окружает MainPage, когда он открывает дизайнера для MainPage.xaml. – Abdousamad