私はWindows Phone 7アプリを書いていますが、このようなxmlファイルがあります
<Barcodes>
<Barcode code="7393997155338"
companyName="Garbo Food AB"
productName="Toast Loaf"/>
</Barcodes>
以下のように xElement を使用して xml ファイルを検索しています。
var searchElement = XElement.Load("storedBarcodes.xml");
var barcodeProductResult = from var in searchElement.Descendants("Barcodes")
where var.Attribute("code").Value == b
select new ProductBarcodes()
{
code = var.Attribute("code").Value,
companyName = var.Attribute("companyName").Value,
productName = var.Attribute("productName").Value
};
if (barcodeProductResult != null)
{
tbSuccessfullSearchOrNot.Text = ("Search has found a matching product!");
if (resultsListBox != null)
{
resultsListBox.ItemsSource = barcodeProductResult;
tbSuccessfullSearchOrNot.Text = ("Search has found a matching product! but listbox is not empty");
}
else
{
tbSuccessfullSearchOrNot.Text = ("Search has found a matching product! but listbox is empty");
}
//tbProductBarcode.Text = ("Product Barcode : " + _code + Environment.NewLine);
//tbCompanyName.Text = ("Company Name: " + _companyName + Environment.NewLine);
}
else
{
tbSuccessfullSearchOrNot.Text = ("No matching product found!");
}
リストボックスにデータが入力された後、以下のように画面に出力されるはずです。いくつかの方法を試しています。{Binding Path=Element[code].Value}" を使用し、Text="{Binding code} のみを使用すると、結果は出力画面で空になります。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<Button Height="150" Content="Press here to scan a barcode !!" Click="Button_Click" Foreground="#FF2FFF07" />
<TextBlock Margin="30" FontSize="36" TextWrapping="Wrap" x:Name="tbSuccessfullSearchOrNot"/>
<TextBlock Margin="30" FontSize="36" TextWrapping="Wrap" x:Name="tbScanResultBarCode"/>
<ListBox x:Name="resultsListBox" TabIndex="8" ItemsSource="barcodeProductResult" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="10" >
<TextBlock x:Name="results" Text="{Binding code}" FontSize="22" FontWeight="Bold" FontStyle="Italic" Foreground="Orange" />
<TextBlock Text="{Binding Path=Element[code].Value}" Foreground="Black"/>
<TextBlock Text="{Binding companyName}" Foreground="Black"/>
<TextBlock Text="{Binding productName}" Foreground="Black"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--<TextBlock Height="346" FontSize="36" x:Name="tbProductDetails" TextWrapping="Wrap" Width="450" >
</TextBlock>-->
<TextBox Height="71" Name="tbProductBarcode" Width="460" IsEnabled="False" IsReadOnly="True" DataContext="{Binding ElementName=tbProductBarcode}" />
<TextBox Height="71" Name="tbCompanyName" Width="460" IsEnabled="False" IsReadOnly="True" />
<TextBox Height="71" Name="tbProductName" Width="460" IsEnabled="False" IsReadOnly="True" />
<!--<Button Height="150" Content="Tap to scan a QR code" Click="Button_Click_1"/>
<TextBlock Margin="30" FontSize="36" TextWrapping="Wrap" x:Name="tbScanResultQR"/>-->
</StackPanel>
</Grid>
編集後: これは私の検索のベースとなるコードです。これは機能し、
private void menuBtn_Click(object sender, RoutedEventArgs e)
{
var element = XElement.Load("SearchFile.xml");
var filteredData = from var in element.Descendants("chipper")
where var.Attribute("County").Value.ToLower()==tbSearch.Text.ToLower()
select new Counties()
{
LName = var.Attribute("LName").Value,
PlAddress = var.Attribute("PlAddress").Value,
County= var.Attribute("County").Value,
PhoneNumber = var.Attribute("PhoneNumber").Value
};
ChipperListBox.ItemsSource = filteredData;
}
そしてxaml:
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,90" Orientation="Horizontal">
<ListBox x:Name="ChipperListBox" SelectionChanged="listBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="10" >
<TextBlock x:Name="chipName" Text="{Binding LName}" FontSize="22" FontWeight="Bold" FontStyle="Italic" Foreground="Orange" Tap="chipName_Tap" />
<TextBlock Text="{Binding PlAddress}" Foreground="Black"/>
<TextBlock Text="{Binding County}" Foreground="Black"/>
<TextBlock Text="{Binding PhoneNumber}" Foreground="Black"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
編集: エミュレーターにはカメラがないため、このアプリを Windows Phone で使用していません。要素名を「Barcode」に変更した後、コール スタックからの情報を参照してください。再びビジュアルスタジオの外で電話とアプリが実行されますが、xamlのリストボックスにはまだ出力されません
「タイプ 'com.google.zxing.ReaderException' の初回例外が Silverlight_ZXing_Core.dll で発生しました
追加情報: ReaderException"
Silverlight_ZXing_Core.dll!com.google.zxing.oned.UPCEANReader.findGuardPattern(com.google.zxing.common.BitArray row, int rowOffset, bool whiteFirst, int[] pattern) + 0xf1 bytes
Silverlight_ZXing_Core.dll!com.google.zxing.oned.UPCEANReader.findStartGuardPattern(com.google.zxing.common.BitArray row) + 0x8 bytes
Silverlight_ZXing_Core.dll!com.google.zxing.oned.UPCEANReader.decodeRow(int rowNumber, com.google.zxing.common.BitArray row, System.Collections.Generic.Dictionary<object,object> hints)
Silverlight_ZXing_Core.dll!com.google.zxing.oned.OneDReader.doDecode(com.google.zxing.BinaryBitmap image, System.Collections.Generic.Dictionary<object,object> hints) + 0x113 bytes
Silverlight_ZXing_Core.dll!com.google.zxing.oned.OneDReader.decode(com.google.zxing.BinaryBitmap image, System.Collections.Generic.Dictionary<object,object> hints)
Silverlight_ZXing_Core.dll!com.google.zxing.oned.OneDReader.decode(com.google.zxing.BinaryBitmap image) + 0x3 bytes
> WP7.ScanBarCode.dll!WP7.ScanBarCode.BarCode.cam_AutoFocusCompleted(object sender, Microsoft.Devices.CameraOperationCompletedEventArgs e) Line 114 + 0x7 bytes C#
Microsoft.Phone.dll!Microsoft.Devices.Camera.SafeFireEvent<Microsoft.Devices.CameraOperationCompletedEventArgs>.AnonymousMethod__1f(object ignored) + 0x17 bytes
mscorlib.dll!System.Threading.ThreadPool.WorkItem.WaitCallback_Context(object state) + 0x18 bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x63 bytes
mscorlib.dll!System.Threading.ThreadPool.WorkItem.doWork(object o) + 0x47 bytes
mscorlib.dll!System.Threading.Timer.ring() + 0x70 bytes