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