gpt4 book ai didi

wpf - 将 WPF Extended Toolkit PropertyGrid 绑定(bind)到字典或其他动态源?

转载 作者:行者123 更新时间:2023-12-02 02:12:20 24 4
gpt4 key购买 nike

我有一个包含多个子元素的 XML 文件。每个子元素都包含一系列元素,但 XML 模式未记录,因此我无法说明每个可能的元素名称。我的目标是为每个子元素提供一个编辑器 View 。例如:

XML 文件

<root>
<element>
<subelement1>value</subelement>
<randomName88787>value</randomName>
<somethingTotallyFunky>value</somethingTotallyFunky>
<iHaveNoIdeaWhatThisWillBe>value</iHaveNoIdeaWhatThisWillBe>
</element>
</root>

我希望使用 WPF 工具包的 PropertyGrid 控件(或类似的控件)来显示 <element> 的所有子元素的列表。 , 但此控件旨在绑定(bind)到 CLR 对象。当然我不能定义一个带有属性的类,因为我不知道那些属性是什么。我已尝试使用以下代码绑定(bind)到 expando 对象:

var expando = new ExpandoObject();
var dict = (IDictionary<string, object>)expando;
foreach (var prop in unit.Elements())
{
if (dict.ContainsKey(prop.Name.LocalName) == false)
{
dict.Add(prop.Name.LocalName, (string)prop.Value);
}
}

Properties.SelectedObject = expando;

但是没有显示任何属性。它似乎不能很好地处理 ExpandoObject。有没有更好的方法来处理我正在尝试做的事情?有更好的控制方法吗?

最佳答案

实际上,您可以在不使用任何自定义对象的情况下执行此操作。在名为 data.xml 的文件中使用您的示例数据尝试此 XAML:

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<XmlDataProvider x:Key="data" Source="data.xml" XPath="/root/element/*"/>
</Window.Resources>
<Grid>
<ListView ItemsSource="{Binding Source={StaticResource data}}">
<ListView.View>
<GridView>
<GridViewColumn Header="Tag" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Name}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=InnerText}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>

我希望您会在 XmlDataProvider.Document 中找到用户更改的任何值,因此保存应该保留用户的更改。

关于wpf - 将 WPF Extended Toolkit PropertyGrid 绑定(bind)到字典或其他动态源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12213799/

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