0
我想从用户选择combox元素的同一个XML文件中获取文本框中的XML元素。从组合框项目中获取XML元素
我使用WPF,我能够用下面的代码
<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文件中的元素组合框本身
<?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;
}
我做了相应的修改,出现了一些错误,这是你的意思? (请参阅在问题末尾更新的原始问题 – JackyBoi 2012-03-11 15:32:41
不,对不起,读取XML的查询应该只在初始化时发生一次,以便代码不应该进入选择更改的处理程序。此外,您不需要在查询结尾处选择query.Element(“QueryName”)。Value; – devdigital 2012-03-11 15:35:05
我对你的Datacontext代码进入到什么地方感到有点困惑?是否是querylistload方法? – JackyBoi 2012-03-11 15:38:31