2011-04-09 13 views
2

私はWPF/C#プログラミングの新人です。 、私はアプリを実行したとき、私は正常にビルドが、ListBoxにXMLファイルを表示

<Hosts> 
    <Host> 
    <IP>1.1.1.1</IP> 
    <HostName>abc01</HostName> 
    </Host> 
    <Host> 
    <IP>2.2.2.2</IP> 
    <HostName>abc02</HostName> 
    </Host> 
</Hosts> 

リストボックスを:

<Window x:Class="test.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <XmlDataProvider x:Key="HostsData" 
        Source="/Hosts.xml" 
        XPath="Hosts/Host" /> 
    </Window.Resources> 
    <Grid> 
     <ListBox Height="100" HorizontalAlignment="Left" Margin="98,70,0,0" Name="listBox1" 
       VerticalAlignment="Top" Width="120" SelectionChanged="listBox1_SelectionChanged" 
       ItemsSource="{Binding Source={StaticResource HostsData}}" 
       DisplayMemberPath="HostName"/> 
    </Grid> 
</Window> 

そしてHosts.xmlが含まれています。私は、このXAMLコードを使用して、リストボックスにxmlファイルの内容を表示しようとしています空です!どこでもHosts.xmlファイルをコピーしましたが、まだ何もありません。

どうぞよろしくお願いします。

+0

私はちょうどSelectionChanged属性なしで同じコードをテストし、リストボックスには、2つの要素を示しました。 「Hosts.xmlファイルをどこにでもコピーしました」とはどういう意味ですか? –

+0

XMLファイルをプロジェクトに追加すると、うまくいきます。コンテンツがリストされています。しかし、これは私が望むものではありません、私は外部XMLファイルを使用したいのです –

+0

外部XMLファイルはどこに保存されていますか? XmlDataProviderの有効なソースを提供するだけです。これは、たとえば、ローカルファイルへのパスやURLなどです。 –

答えて

0

私はちょうど見ている

....このように試してみました
<Window x:Class="WpfApplication2.Window4" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window4" Height="300" Width="300"> 
<Window.Resources> 
    <XmlDataProvider x:Key="BookmarkData" XPath="Hosts/Host"> 
     <x:XData> 
      <Hosts> 
       <Host> 
        <IP>1.1.1.1</IP> 
        <HostName>abc01</HostName> 
       </Host> 
       <Host> 
        <IP>2.2.2.2</IP> 
        <HostName>abc02</HostName> 
       </Host> 
      </Hosts> 
     </x:XData> 
    </XmlDataProvider> 
</Window.Resources> 
    <Grid> 
    <ListBox 
      Background="#999" 
      BorderThickness="2" 
      BorderBrush="White" 
      Margin="10" 
      DisplayMemberPath="HostName" 
      ItemsSource="{Binding Source={StaticResource BookmarkData}, XPath=/Hosts/Host}" 
      /> 

</Grid> 

0

あなたはデータコンテキストを指定するのを忘れたと思います。

DataContext="{Binding Source={StaticResource HostsData}} 

グリッドxamlプロパティまたはリストボックスのいずれかです。

、データはXMLプロバイダから来ているので、Xpathのプロパティタグ

EDIT使用しよう:

を私は完全な実装例を投稿することがより適切見つけ、ブレンド特定の名前空間を無視してください

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" x:Name="Screen_2_1_Name" 
mc:Ignorable="d" 
x:Class="WpfPrototype1Screens.Screen_2_1" 
Width="640" Height="480"> 
<UserControl.Resources> 
    <XmlDataProvider x:Key="uneDataSource" Source="http://www.lemonde.fr/rss/une.xml" d:IsDataSource="True"/> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource uneDataSource}}"> 
    <ListBox Margin="80,88,64,112" Style="{DynamicResource ListBox-Sketch}" ItemsSource="{Binding XPath=/rss/channel/item/title}"/> 
</Grid> 

関連する問題