Как ссылаться на пользовательский элемент управления Silverlight? - PullRequest
2 голосов
/ 03 сентября 2010

Я пытаюсь создать библиотеку элементов управления silverlight, где клиент может выбрать, какой элемент управления он хочет использовать.Проект Silverlight Application будет иметь несколько пользовательских элементов управления.Структура выглядит примерно так:

Project
-App.xaml
-MainPage.xaml
--Controls (Folder)
------ControlA.xaml
------ContorlB.xaml

Как я могу ссылаться на ControlA или ControlB с моих HTML-страниц?Кажется, можно ссылаться только на сборки xap, так что мне нужно создавать приложение Silverlight для каждого usercontrol?Похоже на излишество?

Если бы я хотел использовать ControlA из библиотеки, я хотел бы иметь возможность сделать что-то вроде:

<object>
    <param name="source" value="ClientBin/Silverlight.xap"/>
    <param name="class" value="ControlA"/>
</object>

Я знаю, что выше не действительная разметка SL, нодумаю, вы понимаете, что я пытаюсь сделать?

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

У вас может быть XAML-файл контроллера, который читает InitParams.

Передайте значение в HTML Silverlight:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="ClientBin/SilverlightApplication1.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="initparams" value="control=ControlA" />
      ...

И в вашем событии Application_Startup зачитайте ваше значение:

private void Application_Startup(object sender, StartupEventArgs e)
{
    var initParams = e.InitParams;

    if (initParams.Keys.Contains("control"))
    {
        if (initParams["control"] == "ControlA")
        { 
            // Render control A
            // this.RootVisual = new ControlA();
        } else  if (initParams["control"] == "ControlB")
        { 
            // Render control B
            // this.RootVisual = new ControlB();
        }
    }

    // Default page.    
    this.RootVisual = new MainPage();
}
1 голос
/ 03 сентября 2010

Ваши элементы управления Silverlight не отображаются в HTML. Само приложение Silverlight является просто <object> в разметке HTML (упрощенная история, конечно); элементы управления доступны только внутри приложения Silverlight.

Существуют способы связи между вашим приложением Silverlight и веб-разметкой, например, Вы можете найти способ изменить приложение Silverlight, управляющее его рендерингом.

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