none
如何用c#代码设置ItemsPanelTemplate? RRS feed

  • 问题

  •   <ItemsPanelTemplate >
            <StackPanel  Orientation="Vertical">
            </StackPanel>
        </ItemsPanelTemplate>

    以上xaml代码要用c#new对象的形式创建出来,怎么做?

    new ItemsPanelTemplate(new StackPanel()); 这个代码使用时错误的

    目前已经知道了一种方法,但这张方式涉及到XamlReader,若涉及到自定义布局,设置就比较麻烦。有不用的XamlReader的方法完成么?

     (ItemsPanelTemplate)XamlReader.Parse("<ItemsPanelTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><StackPanel Orientation=\"Horizontal\"/></ItemsPanelTemplate>");


    2020年2月15日 11:17

答案

  • 元素工厂如何?

                ItemsPanelTemplate i = new ItemsPanelTemplate();
                FrameworkElementFactory factory = new FrameworkElementFactory(typeof(StackPanel));
                factory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
                i.VisualTree = factory;
                ListBox box = new ListBox();
                box.ItemsPanel = i;

    • 已标记为答案 Trian555 2020年2月16日 9:55
    2020年2月16日 8:50