【发布时间】:2012-03-12 08:10:48
【问题描述】:
我正在尝试从用户选择的组合框元素中获取文本框中的 XML 元素,也来自同一个 XML 文件。
我正在使用 WPF,我可以使用以下代码使用 xml 文件中的元素填充组合框
<ComboBox Grid.Column="1" Height="21" HorizontalAlignment="Left" Margin="0,32,0,0" Name="QueryChooser" VerticalAlignment="Top" Width="189" ItemsSource="{Binding}" SelectionChanged="QueryChooser_SelectionChanged" />
我的 xaml.cs
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Queryslistload();
}
private void Queryslistload()
{
var xElem = XElement.Load(@"Querys.xml");
var querys = from query in xElem.Descendants("QueryLay")
orderby query.Element("QueryName").Value
select query.Element("QueryName").Value;
QueryChooser.ItemsSource = querys;
}
这是我的 xml 文件本身
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Querys>
<QueryLay>
<QueryID>
1
</QueryID>
<QueryName>Check Logspace</QueryName>
<Query>dbcc sqlperf(logspace)</Query>
</QueryLay>
<QueryLay>
<QueryID>
2
</QueryID>
<QueryName>Check Spaceused</QueryName>
<Query>sp_spaceused</Query>
</QueryLay>
</Querys>
所以现在如果用户从组合框中选择检查日志空间,我希望查询元素显示在文本框中
我如何做到这一点?
更新
public class Query
{
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
private void QueryChooser_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var xElem = XElement.Load(@"Querys.xml");
var querys = xElem.Descendants("QueryLay").Select( e =>
new Query{
Id = Convert.ToInt32(e.Element("QueryID").Value),
Name = e.Element("QueryName").Value,
Value = e.Element("Query").Value
}).OrderBy(q=>q.Name)
select query.Element("QueryName").Value ;
listBox1.ItemsSource = querys;
}
【问题讨论】:
标签: wpf xml data-binding