2016-04-05 7 views
8

Çok araştırdım ve çok denedim ama neden çalışmadığını anlayamıyorum. Bir XML dosyasını xaml'de veri paylaşımı aracılığıyla bir liste görünümüne çıkarmaya çalışıyorum. Veri liste görünümü içinde gösterilmiyor buC# Listeye bir XML bağlanması WPF

<?xml version="1.0" encoding="utf-8"?> 
<Kundenstrom> 
    <Kunden> 
    <Grund>hfth</Grund> 
    <Typ1>Laden</Typ1> 
    <Typ2>Auftrag</Typ2> 
    <Zeitpunkt>04.04.2016 15:01:38</Zeitpunkt> 
    </Kunden> 
    <Kunden> 
    <Grund>testestsetsetse</Grund> 
    <Typ1>Laden</Typ1> 
    <Typ2>Anfrage</Typ2> 
    <Zeitpunkt>04.04.2016 16:57:59</Zeitpunkt> 
    </Kunden> 
</Kundenstrom> 

gibi

<Window 
     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" 
     xmlns:local="clr-namespace:Kundenstrom" 
     xmlns:Properties="clr-namespace:Kundenstrom.Properties" x:Class="Kundenstrom.MainWindow" 
     mc:Ignorable="d" 
     Title="Kundenstrom" Height="232.5" Width="631" Icon="Hopstarter-Sleek-Xp-Basic-User-Group.ico"> 
    <Window.Resources> 
     <XmlDataProvider x:Key="Kundenstromdaten" Source="kunden.xml" XPath="Kundenstrom/Kunden"/> 
    </Window.Resources> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="11*"/> 
      <ColumnDefinition Width="77*"/> 
      <ColumnDefinition Width="11*"/> 
      <ColumnDefinition Width="40*"/> 
      <ColumnDefinition Width="21*"/> 
      <ColumnDefinition Width="357*"/> 
     </Grid.ColumnDefinitions> 
     <TabControl x:Name="tabControl" Grid.ColumnSpan="6" TabStripPlacement="Top" Margin="10,0,10,10"> 
      <TabItem Header="Eintragen"> 
       <Grid Background="#FFE5E5E5"> 
        <TextBox x:Name="txtGrund" Height="44" Margin="10,10,10,0" TextWrapping="Wrap" VerticalAlignment="Top"/> 
        <ComboBox x:Name="cmbTyp1" HorizontalAlignment="Left" Margin="10,59,0,0" VerticalAlignment="Top" Width="287"> 
         <ComboBoxItem Content="Laden"/> 
         <ComboBoxItem Content="Telefon"/> 
         <ComboBoxItem Content="Mail"/> 
        </ComboBox> 
        <ComboBox x:Name="cmbTyp2" Margin="302,58,10,0" VerticalAlignment="Top"> 
         <ComboBoxItem Content="Anfrage"/> 
         <ComboBoxItem Content="Auftrag"/> 
         <ComboBoxItem Content="Abholung"/> 
        </ComboBox> 
        <Button x:Name="btnEintragen" Content="Eintragen" HorizontalAlignment="Left" Margin="10,86,0,0" VerticalAlignment="Top" Width="287" Height="36" Click="btnEintragen_Click"/> 
       </Grid> 
      </TabItem> 
      <TabItem Header="Kunden anzeigen"> 
       <Grid Background="#FFE5E5E5"> 
        <ListView Margin="10" ItemsSource="{Binding Source={StaticResource Kundenstromdaten}}"> 
         <ListView.View> 
          <GridView> 
           <GridViewColumn DisplayMemberBinding="{Binding XPath=Grund}" Header="Grund" /> 
           <GridViewColumn DisplayMemberBinding="{Binding XPath=Typ1}" Header="Kundentyp" /> 
           <GridViewColumn DisplayMemberBinding="{Binding XPath=Typ2}" Header="Anfragetyp" /> 
           <GridViewColumn DisplayMemberBinding="{Binding XPath=Zeitpunkt}" Header="Zeitpunkt" /> 
          </GridView> 

         </ListView.View> 
        </ListView> 
       </Grid> 
      </TabItem> 
     </TabControl> 

    </Grid> 
</Window> 

Ve XML dosyası görünüyor. Ek cs koduna ihtiyacım var mı?

+1

Kodunuz bana göre uygun görünüyor, DataBinding hatalarını kontrol ettiniz mi? [Böylece] (http://stackoverflow.com/questions/4026543/is-there-a-good-tool-for-debugging-xamls-databinding-behavior-errors-at-runti) gibi. – Kolky

+0

Liste görünümü yerine ağaç görünümü kullanıyorum. Aşağıdaki örneğe bakın: http://stackoverflow.com/questions/28976601/recursion-parsing-xml-file-with-attributes-into-treeview-c-sharp – jdweng

+3

Sadece test ettim ve beklendiği gibi çalışıyor. Kunden.xml, kaynak veya içerikte var mı? –

cevap

1

Ekstra cs kodu gerekmez.

XmlDataProvider'ın source özelliği bir Uri değil, bir dosya yoludur. Bu nedenle, sadece "kunden.xml" yazarsanız, uygulamanız bu dosyayı uygulama kaynaklarında arar. Bu dosyayı uygulama kaynaklarına eklemek için xml dosyanızı projenize ekleyeceksiniz (Add -> Mevcut öğe).

: size, Yalnızca açıkça (yani kunden.xml exe aynı klasörde olmalıdır) bağımsız dosyadan yüklemek uygulamanızı istiyorum özellikleri "Kaynak"

için "Eylem kurmak" set dosyaları çıktı klasörüne

  • Kopya xml: manuel veya otomatik, yani set kunden.xml "Yok", ama "çıktı Dizini kopyala" için "Eylem kurmak"
  • Değişim Kaynak =”kunden.xml "yeni eğer kopyala" için "To Source =" paket: // siteoforigin: ,,,/kunden.xml "

Eğer abs kullanmak isterseniz Dosyanın olute ismi, sadece Source = “file: /// D: /my/absolute/path/kunden.xml” kullanın.