1

IsolatedStorage にある XML ファイルからデータを読み込みたい。次に、XML要素インデックスである変数固有のインデックス番号を持っています。そして、ここで問題があります。この要素から TextBoxes (通常の StackPanel 内) の値をロードしたいからです。これをバインドしてリストボックスに入れようとしましたが、このボックスからテキストを読み取ることができません。これはリストボックスの項目です。単に要素の属性を TextBoxes にロードしたいだけで、その後、このテキストボックスで編集されたテキストを読みたいと思っています。これは xml 要素の例です。

<person index="1" att1="qwerty" att2="azerty" att3="abcdef"/>

これは Xaml コードです:

<StackPanel x:Name="stack">
 <TextBlock Height="27" Margin="0,0,0,0" Grid.Row="1" TextWrapping="Wrap" Text="Record index:" VerticalAlignment="Top" Foreground="#FF6C6C6C"/>
 <TextBox Text="{Binding Index}" x:Name="index_box_det" Height="65" Margin="-12,-10,0,0" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="#FF40AA2F" HorizontalAlignment="Left" Width="467" SelectionBackground="#FF40AA2F" SelectionForeground="White" BorderBrush="#FF3FA92E" FontSize="18.667"/>
</StackPanel>

私はこれを試しました:

var ind = "1";
        using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("People2.xml", FileMode.Open, isoStore))
            {
                XDocument loadedCustomData = XDocument.Load(isoStream);
                var filteredData = from c in loadedCustomData.Descendants("person")
                                   where c.Attribute("index").Value == ind
                                   select new Person()
                                   {
                                       index= c.Attribute("index").Value,
                                       att1= c.Attribute("att1").Value,
                                       att2= c.Attribute("att2").Value,
                                       att3= c.Attribute("att3").Value
                                   };
                stack.DataContext = filteredData;
            }

しかし、あなたが思うように、それはうまくいきません。誰かがこの値をテキストボックスにロードする考えを持っていますか?

編集:私はこれを試しました:

 var ind = "1";
        using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("People2.xml", FileMode.Open, isoStore))
            {
                XDocument loadedCustomData = XDocument.Load(isoStream);
                var filteredData = from c in loadedCustomData.Descendants("person")
                                   where c.Attribute("index").Value == ind
                                   select new Person()
                                   {
                                       index= c.Attribute("index").Value,
                                       att1= c.Attribute("att1").Value,
                                       att2= c.Attribute("att2").Value,
                                       att3= c.Attribute("att3").Value
                                   };
                stack.DataContext = filteredData;
            }

index_box_det.Text = インデックス;

まだ動作しません。

4

1 に答える 1

0

FirstOrDefaultメソッドを呼び出す必要があります:

var ind = "1";
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("People2.xml", FileMode.Open, isoStore))
    {
        XDocument loadedCustomData = XDocument.Load(isoStream);
        var filteredData = (from c in loadedCustomData.Descendants("person")
           where c.Attribute("index").Value == ind
           select new Person()
           {
               Index = c.Attribute("index").Value,
               Att1 = c.Attribute("att1").Value,
               Att2 = c.Attribute("att2").Value,
               Att3 = c.Attribute("att3").Value
           }).FirstOrDefault();
        stack.DataContext = filteredData;
    }
}

Personクラス:

public class Person
{
    string index;
    string att1;
    string att2;
    string att3;

    public string Index
    {
        get { return index; }
        set { index = value; }
    }

    public string Att1
    {
        get { return att1; }
        set { att1 = value; }
    }

    public string Att2
    {
        get { return att2; }
        set { att2 = value; }
    }

    public string Att3
    {
        get { return att3; }
        set { att3 = value; }
    }
}
于 2013-01-27T20:18:16.033 に答える