Silverlight每页有两个用户控件?

时间:2011-05-24 14:10:16

标签: silverlight

Silverlight中是否可以在一个页面上并排放置两个控件?仅在一个页面上只有一个用户控件似乎非常有限。

我是银光的新手。但是每个页面似乎都在主页XAML的顶部有“UserControl x:Class ...”。那么如果你想要一个有两个并排的应用程序相互影响的应用呢?

好的,它不在App中,它位于page.xaml中。所以我想进一步解释让我问这个问题。在onw应用程序中可以有两个页面吗?

我试图在同一页面上有两个预建控件(一个visi控件和一个矢量树控件)。该应用程序的格式如下所示:

enter image description here

所以我想要一个应用程序左侧的树视图和右侧的visi控件。这可能吗?

树视图示例具有此用户控制代码

<UserControl x:Class="TreeViewProgrammatic.Page"

xmlns="http://schemas.microsoft.com/client/2007"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:liquidTreeView="clr-namespace:Liquid;assembly=Liquid.TreeView"

Width="400" Height="300">

,另一个控件有一个像这样的用户控制代码:

<UserControl x:Class="LiveUpdate.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Width="500" Height="340">

有没有办法让两个在一个页面上.xaml?

3 个答案:

答案 0 :(得分:1)

认为我理解你的意思,Page 一个控件本身(根控件)并且可以包含控件;最初它应该包含Grid,其大小与Page相同,这意味着您可以在Grid中放置一个控件来占用Page上的所有空格。不过,我们可以在Column中定义RowGrid,所以请考虑一下:

<Grid>
  <Grid.ColumnDefinitions>
      <ColumnDefinition />
      <ColumnDefinition />
  </Grid.ColumnDefinitions>

  <TextBlock Grid.Column="0" Text="I'm on the left side!" />
  <TextBlock Grid.Column="1" Text="I'm on the right side!" />
</Grid>

同样适用于自定义UserControl项 - 本身是根控件,添加到其中的是子项,这就构成了复合控件。

答案 1 :(得分:1)

我会解释你的要求。你有UserControl的两个衍生物,其中包含部分第三方控件(实际上与要求无关)以及一些你自己的代码,使这些控件可以执行你想要的操作。

现在,您希望用户可以同时看到它们,它们可以相互交互,因此它们可以在同一个Silverlight应用程序中运行。

您已将它们都称为“页面”,但随后将它们放在自己的命名空间中(可能是因为您实际上已经创建了两个项目)。所以第一步是创建一个新的silverlight应用程序并将它们放在同一个项目中,让我们调用项目“Xarzu1”,同时让你的UserControl衍生物重命名为TreeViewProgrammaticLiveUpdate所以我们没有两个名称为“Page”的控件。

现在编辑MainPage.xaml,使其如下所示: -

<UserControl x:Class="Xarzu1.MainPage"
    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"
    xmlns:local="clr-namespace:Xarzu1"
    mc:Ignorable="d"
    d:DesignHeight="400" d:DesignWidth="800">
     <Grid x:Name="LayoutRoot">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2*" />
        </Grid.ColumnDefinitions>
        <local:TreeViewProgrammatic />
        <local:LiveUpdate />
    </Grid>
</UserControl>

现在两个控件并排显示。

答案 2 :(得分:0)

在实例化用户控件的2个实例时是否收到任何错误?据我所知,应该可以在silverlight页面中拥有多个用户控件。你能发布一些关于你想要做什么的代码吗?