Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建模板XAML样式(代码隐藏)WPF_Wpf - Fatal编程技术网

如何创建模板XAML样式(代码隐藏)WPF

如何创建模板XAML样式(代码隐藏)WPF,wpf,Wpf,我的xaml上有这段代码,运行良好(ListView组件) 我试图用这个答案在代码背后进行复制,但我无法让它工作(Russell的答案)。任何帮助都将不胜感激。谢谢 编辑: ListView ListView=新建ListView(); listView.ItemsPanel=GetItemsPanelTemplate(); 私有项spanelTemplate GetItemsPanelTemplate() { 字符串xaml=@” "; 将XamlReader.Parse(xaml)作为

我的xaml上有这段代码,运行良好(ListView组件)


我试图用这个答案在代码背后进行复制,但我无法让它工作(Russell的答案)。任何帮助都将不胜感激。谢谢

编辑:

ListView ListView=新建ListView();
listView.ItemsPanel=GetItemsPanelTemplate();
私有项spanelTemplate GetItemsPanelTemplate()
{
字符串xaml=@”
";
将XamlReader.Parse(xaml)作为ItemsPanelTemplate返回;
}

如果去掉
ListView.ItemsPanel
元素和内部
ItemsPanelTemplate
元素,代码将正常工作:

private ItemsPanelTemplate GetItemsPanelTemplate()
{
    return XamlReader.Parse(
        @"<ItemsPanelTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
            <StackPanel Orientation='Horizontal' IsItemsHost='True' />
          </ItemsPanelTemplate>") as ItemsPanelTemplate;
}

给我们看看你写的不起作用的代码,我们会告诉你出了什么问题。我编辑了这个问题,你必须实际阅读错误信息。。。请将上面的xaml与代码xaml字符串进行比较。后者具有
列表视图。ItemsPanel
嵌套在
ItemsPanelTemplate
中,这当然不起作用。寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。如果我可以再问你一件事……在这个组件中插入更多属性,如对齐和大小,它会是什么?使用相同的模式XamlReader,我试图理解…您应该只使用
XamlReader
来处理不能用C#等价编写的内容。大多数Xaml代码都能清晰地转换为C#,但模板是一种特殊情况。要更改任何其他属性,只需直接在实例上更改它,例如,
listView.Width=250
listView.HorizontalAlignment=HorizontalAlignment.Center
。当然,这很有意义。。。我现在明白了,再次感谢你。
ListView listView = new ListView();
listView.ItemsPanel = GetItemsPanelTemplate();

private ItemsPanelTemplate GetItemsPanelTemplate()
{
  string xaml = @"<ItemsPanelTemplate   xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
                            <ListView.ItemsPanel>
                            <ItemsPanelTemplate>
                            <StackPanel Orientation=""Horizontal""></StackPanel>
                            </ItemsPanelTemplate>
                            </ListView.ItemsPanel>
                </ItemsPanelTemplate>";
  return XamlReader.Parse(xaml) as ItemsPanelTemplate;
}
private ItemsPanelTemplate GetItemsPanelTemplate()
{
    return XamlReader.Parse(
        @"<ItemsPanelTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
            <StackPanel Orientation='Horizontal' IsItemsHost='True' />
          </ItemsPanelTemplate>") as ItemsPanelTemplate;
}
private ItemsPanelTemplate GetItemsPanelTemplate()
{
    var factory = new FrameworkElementFactory(typeof(StackPanel));

    factory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
    factory.SetValue(Panel.IsItemsHostProperty, true);

    return new ItemsPanelTemplate { VisualTree = factory };
}