gpt4 book ai didi

c# - 使用 Linq to XML 生成动态 WPF

转载 作者:数据小太阳 更新时间:2023-10-29 02:37:04 28 4
gpt4 key购买 nike

我一直在尝试创建一些动态 Xaml。

我有以下 C#

private void LoadUI()
{
XNamespace xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";

dynamic UI = new XElement(xmlns + "Grid",
new XAttribute(XNamespace.Xmlns + "x", "http://schemas.microsoft.com/winfx/2006/xaml"),
new XAttribute("Name", "Grid1"),
new XElement(xmlns + "Grid.ColumnDefinitions",
new XElement(xmlns + "ColumnDefinition", new XAttribute("Width", "100*")),
new XElement(xmlns + "ColumnDefinition", new XAttribute("Width", "200*"))),
new XElement(xmlns + "StackPanel", new XAttribute("Name", "StackLabels"),
new XAttribute("Margin", "3"),
from column in this.TableSchema
where column.IsPrimaryKey == 0 && column.DataType != "timestamp"
select
new XElement(xmlns + "Label", new XAttribute("Height", "28"),
new XAttribute("Name", column.ColumnName + "Label"),
new XAttribute("HorizontalContentAlignment", "Right"),
column.ColumnName)),
new XElement(xmlns + "StackPanel",
new XAttribute("Grid.Column", "1"),
new XAttribute("Name", "StackFields"),
new XAttribute("Margin", "3")
,

from column in this.TableSchema
where column.IsPrimaryKey == 0 && column.DataType != "timestamp"
select
GetUIElement(column)));

this.DynamicContent.Content = XamlReader.Load(UI.CreateReader());

}

我遇到的错误是在尝试创建 Grid.Column 时。确切的错误是{"Der unbekannte Member\"Grid.Column\"kann nicht festgelegt werden。"}

所以它不知道 Grid.Column...

有人有什么想法吗?

它与新的 XAttribute("Grid.Column", "1") 一起工作正常,注释掉的行并没有自然地显示我想要的内容!

生成的网格如下所示:

 <Grid xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="Grid1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="200*" />
</Grid.ColumnDefinitions>
<StackPanel Name="StackLabels" Margin="3">
<Label Height="28" Name="NummerLabel" HorizontalContentAlignment="Right">Nummer</Label>
</StackPanel>
<StackPanel Grid.Column="1" Name="StackFields" Margin="3">
<TextBox Height="28" Name="txtNummer" Text="{Binding Path=Nummer}" />
</StackPanel>
</Grid>

最佳答案

编辑:

它是可复制的。 XamlReader.Load 与提供的 XmlReader 的交互似乎存在一些问题。它抛出 XamlParseException “无法设置未知成员‘Grid.Column’。”

奇怪的是,转换为字符串并从中加载 XAML 有效:

var xml = UI.ToString();
var reader = XmlReader.Create(new StringReader(xml));
var content = XamlReader.Load(reader); // works now.

我看到您创建 XML 标记只是为了将其转换为 UI 对象。为什么不直接从查询中创建 UI 对象呢?

关于c# - 使用 Linq to XML 生成动态 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912862/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com