2015-02-05 271 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

相關問題