在xml数据的代码中创建绑定

时间:2013-04-24 16:56:11

标签: c# wpf linq xaml

我想将样本数据中的数据绑定到c#中的代码。当尝试在线提供不同型号时,我无法获得准确的输出。我想在数据表中的两个值之间进行算术运算。

我的xml数据如下所示:

<SampleData:data xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.data"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <SampleData:data.factors>
        <SampleData:cfsItem col1="item1" item1="1" item2="2" />
        <SampleData:cfsItem col2="item2" item2="3" item2="4" />
    </SampleData:data.factors>
</SampleData:data>

我想用LINQ查询选择值;即从数据中的表'因子'中选择col1,并将其与从listbox元素返回的值进行比较。

private void ListBox1_Tap(object sender, GestureEventArgs e)
{
    ListBoxItem selected = ListBox1.SelectedItem as ListBoxItem;
    string y = selected.Content as string;
    this.DataContext = from factors in data
                       where col1.factors == y
                       select item1;
}

任何人都可以帮我解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

看起来您的data对象是单个项目,并且您真正在factors内寻找data。根据您展示的内容,您可能需要以下内容根据factors的内容与ListBox.SelectedItem属性进行比较,选择col1

就像一个注释:我认为你的意思是第二个记录中的第一个item2真正意味着item1。如果是这样,以下内容适用:

private void ListBox1_Tap(object sender, GestureEventArgs e)
{
    var selectedItem = (ListBoxItem)ListBox1.SelectedItem;
    if (selectedItem != null)
    {
        var y = (string)selectedItem.Content;
        var filteredFactors = (from factor in data.factors
                               where factor.col1 == y
                               select factor.Item1);
        //filteredFactors is IEnumerable
        this.DataContext = filteredFactors;
        // if you need the first only or nothing if there is none.
        this.DataContext = filteredFactors.FirstOrDefault();
        // if there can be nothing or only one
        this.DataContext = filteredFactors.SingleOrDefault();
    }
}

在上面的示例中,我仅选择了已过滤的item1的{​​{1}} 如果您想要返回整个记录,请在查询中删除factors

.item1



您可能会注意到我多次使用关键字var filteredFactors = (from factor in data.factors where factor.col1 == y select factor); 。如果它提高了可读性,我喜欢使用它。如果您有兴趣,请参阅Implicitly Typed Local Variables