2017-06-14 49 views
1
<ItemsControl>   
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Grid /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

如果我想的ItemsPanelTemplate從默認(StackPanel中),以網格改變,我做以上XAML。我怎麼能在代碼中實現同樣的事情?如何更改代碼後面的ItemsPanelTemplate?

我讀了這個here,但無法弄清楚。

+0

如何建設性的。 –

+0

不要粗魯;只是你所問的並不是WPF打算如何工作。 – BradleyDotNET

+0

嗯,它不是WPF,它是UWP。我在C#中創建了一個繼承ItemsControl的自定義控件,並根據算法將每個子元素放在徑向模式中。該模板必須始終是一個網格,它不能是一個StackPanel。 –

回答

3

我更願意這樣做的自定義控件的默認樣式裏面Generic.xaml,但如果你想有一個純C#的方式,在這裏是如何可以做到的 -

private void ApplyGridAsItemsPanel() 
{ 
    MyItemsControl.ItemsPanel = ParseItemsPanelTemplate(typeof(Grid)); 

    ItemsPanelTemplate ParseItemsPanelTemplate(Type panelType) 
    { 
     var itemsPanelTemplateXaml = 
      [email protected]"<ItemsPanelTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
            xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'> 
        <{panelType.Name} /> 
       </ItemsPanelTemplate>"; 

     return (ItemsPanelTemplate)XamlReader.Load(itemsPanelTemplateXaml); 
    } 
} 
+2

謝謝。我知道這是非常規的,我有很好的機會接受這個建議。我沒有意識到這將涉及c#文件中的實際xaml語法,我同意這是荒謬的。 –

相關問題