Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Как добавит UserControl на страницу?


Автор: RomaKiev 14.7.2011, 23:59
Доброго времени суток!

Подскажите как добавить нужный UserControl на страницу приложения навигации Silverlight програмно в зависимости от выбора элемента в ComboBox, который находится на этой странице?

Вот к примеру один из моих элементов UserControl:
Код

<UserControl x:Class="Drag_And_Drop.SilverlightControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    
    <Grid x:Name="LayoutRoot" Background="White">
        <!--Здесь находится содержимое UserControl -->  
    </Grid>
</UserControl>


Нужно добавить его на эту страницу програмно(не в XAML!) при выборе определенного пункта в ComboBox

Код

<navigation:Page x:Class="Навигация.Views.Page1" 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           mc:Ignorable="d"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
           d:DesignWidth="800" d:DesignHeight="800"
           Title="Page1 Page" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">
    <Grid x:Name="LayoutRoot" Height="685" Width="739">
        
<ComboBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="11,0,0,424" Name="TipVoprosa"
                  VerticalAlignment="Bottom" Width="149" SelectionChanged="TipVoprosa_SelectionChanged">
            <ComboBoxItem Content="Один из многих" AllowDrop="True" />
            <ComboBoxItem Content="Многие из многих" AllowDrop="True" />
            <ComboBoxItem Content="Упорядочение" />
            <ComboBoxItem Content="Область на картинке"/>
        </ComboBox>

    </Grid>
</navigation:Page>


Как это сделать?

Автор: Ronin08 15.7.2011, 08:25
Киньте на Страницу ContentControl. У Combobox на событии SelectionChanged Устанавливайте для ContentControl.Content ваш UserControl

Код

<ContentControl x:Name="contentCtrl"/>

Код

var slvControl= new SilverlightControl1();
contentCtrl.Content = slvControl; 

Автор: ДобренькийПапаша 15.7.2011, 08:27
Эм... А в чём проблема-то? smile

Ну вот у меня тоже в текущем проекте валяется UserControl:
Код

<UserControl x:Class="ServiceMode.OnScreenKeyboardsForms.OnScreenFullKeyboard"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             Name="keyboard">
...
</UserControl>


Находясь в обычном классе в пространстве имён ServiceMode.Forms я в методе написал такой код:
Код

OnScreenKeyboardsForms.OnScreenFullKeyboard a = new OnScreenKeyboardsForms.OnScreenFullKeyboard();


И всё работает, собственно.

Фу ты, неправильно вашу задачу понял, извиняюсь.

Автор: Kefir 15.7.2011, 09:40
Код

LayoutRoot.Children.Add(new MyUserControl());

Автор: RomaKiev 15.7.2011, 18:06
Спасибо за ответ. Помогло

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)