2015-02-05 273 views
1

这是我的问题:我有一个包装类,它包含每个包含15个图像的列表集合。我想绑定一个中心StackPanel实际上修改相同的StackPanel已传递给它,并添加子元素,每个包含15个图像的StackPanel将StackPanel绑定到添加子元素的方法

澄清:

  • 我有一个中央StackPanel具有垂直方向。 这个StackPanel位于DataTemplate

    <DataTemplate> 
        <Grid x:Name="ImageDisplayGrid" Height="861" Width="656"> 
          <StackPanel x:Name="CentralImagePanel" HorizontalAlignment="Left" Height="841" Margin="10,10,0,0" VerticalAlignment="Top" Width="636"/> 
        </Grid> 
    </DataTemplate> 
    
  • 我有一个包含多达15幅图像的每个(如WritableBitmap对象我的包装类的实例。
  • 我想结合我中心StackPanel一些方法,将修改StackPanel,通过我的列表迭代包装类和添加子StackPanel控制中央StackPanel我发现的包装类的每个实例
  • 对于(ImageSet1,ImageSet2等例如)包装类的每个实例,新的StackPanel将被添加到中央StackPanel会使用该包装类实例中包含的图像进行填充。
  • 在我看来,这里没有任何东西需要“返回”,所以我希望有一种方法可以将控制权(中心StackPanel)转换为某种方法,让方法修改它,然后运行在中心StackPanel后面填充其子`StackPanels'。

为了澄清更多:Netflix公司的

思考。您知道如何在每个类别中垂直滚动,并且每个类别都允许您水平滚动吗?这就是我想模拟的,只有我希望它是动态的,并绑定到包含要使用的图像列表的包装类。

我现在的主要障碍是中央StackPanel位于DataTemplate之内,所以在运行时不能轻松访问它。最重要的是,无论如何使用绑定会更好。

我试图使用IValueConverter将我的包装类转换为StackPanel对象的列表,但中央StackPanel可以使用,但这不起作用。我还搜索了将控件绑定到没有任何运气的没有返回属性的方法。

任何帮助或例子将不胜感激。

回答

1

你在考虑这个错误。真的,真的,错了。 StackPanel布局控制。你不应该永远直接修改其子或任何其他属性。

正如你所注意到的,没有真正的方法可以用你描述的方式完成这个任务。

要显示集合,请使用ItemsControl。对你来说,这将是这样的:

<ItemsControl ItemsSource="{Binding Categories}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <ItemsControl ItemsSource={"Binding Videos"}> 
       <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation="Horizontal"/> 
        </ItemsPanelTemplate> 
       </ItemsControl.ItemsPanel> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <!-- Whatever --> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

公告内模板另一个ItemsControl,这次与水平StackPanel为面板模板。

+0

这是正确的WPF方式。首先构建您的数据对象,并确保它们正确,然后将您的UI构建/绑定到数据,以便提供用户友好的界面,以便用户可以与它们进行交互。要使用Netflix示例,您的数据将具有CategoryModel对象,每个CategoryModel对象都有一个Videos集合。 ICommand可用于添加/修改这些数据集合。诸如此处提供的XAML之类的UI将被用于提供用于显示对象的用户友好的界面,并且将使用按钮来执行修改命令 – Rachel 2015-02-05 21:18:54

相关问题