locked
Добавление пользовательского элемента управления в дизайнтайме RRS feed

  • Общие обсуждения

  • Здравствуйте.

    Создал пользовательский элемент управления. Без проблем создаю его в конструкторе главной страницы. Дальше в коде на шарпе тоже проблем нет. Захотелось создать его в коде страницы на xaml. И тут 2 проблемы:

    1. Указываю пространство имён компонента, прописываю в гриде и узнаю, что студия его не видит.

    2. Через Сервис->Выбрать элементы панели элементов добавил его на панель элементов, всё добавилось. Но когда кидаю его на форму, ловлю "Не удается создать экземпляр".

    Думал, что с компонентом беда, создал новый (простой грид красного цвета). Та же история.

    13 июня 2014 г. 21:11

Все ответы

  • Код нужен, покажите xaml
    14 июня 2014 г. 15:55
  • хамл компонента:

    <UserControl    x:Class="TestCompona.UC1"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:TestCompona"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d"    d:DesignHeight="100"    d:DesignWidth="500">        <Grid Background="Red">    </Grid></UserControl>

    хамл страницы

    <Page
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:TestCompona="using:TestCompona"
        x:Class="App1.MainPage"
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <Grid>
        <TestCompona:UC1 Name="Va"/>
        </Grid>
    </Page>

    Студия 2013 (для 2012 стековерфлоу и мсдн упорно шлют на страницу с описанием бага студии)

    14 июня 2014 г. 18:01
  • У Вас пользовательский элемент находится в пространстве имен TestCompona? То вроде все правильно, попробуйте префиксу пространства имен дать другое имя, например:

    ...
    xmlns:mycontrol="using:TestCompona"
    ...
    
    ...
    <mycontrol:UC1 x:Name="Va"/>
    ...

    15 июня 2014 г. 8:12
  • Смущает строка:

    ...
    xmlns:local="using:App1"
    ...

    Может у Вас контрол в пространстве имен App1, тогда можно описывать так:

    ...
    <local:UC1 x:Name="Va"/>
    ...
    Короче, откройте cs файл контрола, там видно в каком пространстве имен находится контрол, и на странице пишите:
    ...
    xmlns:mycontrol="using:MyControlNamespace"
    ...
    
    ...
    <mycontrol:UC1 x:Name="Va"/>
    ...

    15 июня 2014 г. 8:20
  • С пространствами имен всё должно быть верно. Проблема не в том, что студия не видит контрол, а в том, что "Не удалось создать экземпляр UC1" XAML parsing failed

    15 июня 2014 г. 10:45
  • Попробуйте создать новый проект и провернуть все это в нем. Если проблема повторится, то вы что то не так делаете, если проблем не будет, то косяк закрался где то в проекте. Такое иногда бывает, если переименовывать проект или пространства имен, не на начальном этапе.

    VB.Net - WPF, WinRT, WP

    15 июня 2014 г. 10:52
  • Так и сделано, чуть выше xaml свежесозданых компонента и страницы.
    15 июня 2014 г. 12:09
  • Так и сделано, чуть выше xaml свежесозданых компонента и страницы.
    Тогда выложите этот проект на любой файлообменник, что бы можно было понять в чем ваша ошибка. А может это глюк студии если на других машинах все пройдет без проблем.

    VB.Net - WPF, WinRT, WP

    15 июня 2014 г. 12:13