Пользовательский элемент управления Silverlight 4 не отображается - PullRequest
0 голосов
/ 26 октября 2011

Я новичок в SL и, должно быть, здесь упускаю что-то действительно фундаментальное.

Я создал очень простой пользовательский элемент управления, например, так: -

<UserControl x:Class="Company.UI.Common.Controls.TestControl"
    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="Yellow" Width="100" Height="20">
        <TextBlock Text="foo"></TextBlock>
    </Grid>
</UserControl>

Тогда, на мой взгляд, яЯ ссылаюсь на него следующим образом: -

xmlns:medControls="clr-namespace:Company.UI.Common.Controls;assembly=Company.UI.Common"

Затем включите его в пользовательский интерфейс следующим образом: -

<medControls:TestControl Width="100" Height="20" Visibility="Visible" />

Однако, когда я запускаю приложение, ничего не появляется, просто пустое пространство 100x20пикселей, где должен быть элемент управления.Я использовал Silverlight Spy, и он показывает присутствующий элемент управления со всеми правильными деталями - тип, сборка, видимость и т. Д. Я установил точку останова в конструкторе пользовательского элемента управления и могу подтвердить, что вызывается InitializeComponent ().

Буду очень признателен за любые предположения относительно того, что происходит, так как я рву волосы за то, что должно быть очень простым делом!

Заранее спасибо, Энди

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Это оказалось известной ошибкой в ​​VS2010, о которой сообщалось здесь: http://connect.microsoft.com/VisualStudio/feedback/details/683175/visual-studio-failing-to-embed-g-resources-file-in-dll-with-certain-silverlight-project-files

В принципе, в некоторых ситуациях порядок элементов в файле .csproj может изменяться, в результате чего файлы XAML небыть включенным в сборку, и это то, что происходило со мной.Нет ошибок во время выполнения.Ничего такого.Просто пустое пространство, где пользовательский элемент управления должен был визуализироваться.

Приведенная выше ссылка говорит вам, что вам нужно сделать, чтобы решить проблему, и включает в себя ручное редактирование файла .csproj и перемещение определенных элементов.

Кстати, эта же ошибка также была причинойдругой проблемы, с которой я столкнулся, когда код моего пользовательского элемента управления ссылался на элемент управления (например, «this.txtForename»).Ссылка на элемент управления, которая устанавливается в InitializeComponent с использованием FindName (), всегда была нулевой.

Надеюсь, это поможет кому-то еще.

Andrew

0 голосов
/ 26 октября 2011

Посмотрите, поможет ли это:

http://msdn.microsoft.com/en-us/library/system.windows.controls.usercontrol%28v=vs.95%29.aspx

http://10rem.net/blog/2010/02/05/creating-customized-usercontrols-deriving-from-contentcontrol-in-wpf-4

Я никогда не пытался создать пользовательский пользовательский контроль в xaml, я всегда делал это программно, вы можете увидеть это в этом примере, но вы можете выполнить его, если используете один ContentControl или один ContentPresenter , а затем позвоните вам UserControl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...