Manu Prasad Ответов: 1

Привязка данных не работает.


Всем Привет,
Я использовал один XMLfile в качестве источника данных для моей datagrid в WPF.

XML:-
<?xml version="1.0" encoding="utf-8" ?>
<Profiles>
  <Profile Name="PGB570/120/600/120" Weight="19200" Bolt="42"/>
  <Profile Name="PGB570/100/600/100" Weight="16400" Bolt="42"/>
  <Profile Name="PGB570/70/600/70" Weight="13300" Bolt="36"/>
  <Profile Name="PGB570/60/600/60" Weight="10300" Bolt="36"/>
  <Profile Name="UC" Weight="8900" Bolt="30"/>
</Profiles>


И в моем дизайнерском...
код XAML:
<Window x:Class="TEST_APP.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"

        

        Title="TEST_APP" Height="280" Width="574""

        ResizeMode="CanMinimize">
    <Window.Resources>
        <XmlDataProvider x:Key="ProfileData" Source="Resources/ProfileList.xml" XPath="/Profiles/Profile"/>
    </Window.Resources>
    
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <TabControl HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch">
            <TabItem Header="Diagrid Diagonals">
                <Grid>
                    <DataGrid x:Name="profileData" HorizontalAlignment="Center" Height="147" Margin="0,0,0,20" VerticalAlignment="Center" Width="283" DataContext="{StaticResource ProfileData}" ItemsSource="{Binding XPath=/Profiles/Profile}" AutoGenerateColumns="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Profile" Binding="{Binding XPath= @Name}"/>
                            <DataGridTextColumn Header="Max. Weight" Binding="{Binding XPath=@Weight}"/>
                            <DataGridTextColumn Header="Bolt Dia" Binding="{Binding XPath=@Bolt}"/>
                        </DataGrid.Columns>
                    </DataGrid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="303"/>
                        <ColumnDefinition Width="153"/>
                        <ColumnDefinition Width="91"/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                </Grid>
            </TabItem>
        </TabControl>
    </Grid>
</Window>


В конструкторе все работает хорошо, и я вижу, что datagrid заполнен данными. Но во время выполнения он не загружается,а просто пустая datagrid.
Пожалуйста, взгляните и помогите мне.

Что я уже пробовал:

Код также очень хорошо работал во время выполнения, но что-то случилось, и теперь он ничего не показывает. Вот почему мне интересно!!.
Я пытался изменить XAML по-разному, но никакой надежды.Пожалуйста, подумайте, что я новичок в WPF и XAML.

1 Ответов

Рейтинг:
2

johannesnestler

Никакого реального решения, извините..
Но:
Я попробовал ваш код (скопированный в новый проект), и он работал так, как ожидалось. Поэтому я бы сказал, что в вашем xaml или XML нет ничего плохого. Но я думаю, что лучше всего установить XML. file в build-action None и скопировать в выходной каталог или он действительно нужен вам как ресурс? Поэтому я бы проверил правильность свойств файла и то, что вы хотите. Кроме неправильной настройки файла, я понятия не имею, что могло бы пойти не так с этим... может быть, начать все сначала (мне просто понадобилась 1 минута, чтобы скопировать ваш код и файл данных в новое решение), чтобы исключить некоторые настройки проекта, которые вы, возможно, изменили непреднамеренно...


Manu Prasad

Не знаю причины, но он снова работает, когда я сменил источник="Resources/ProfileList.xml" к источнику= "/Resources/ProfileList.xml". Просто один Слэш перед "ресурс". После того, как отменено изменение, все равно оно остается там по мере необходимости :).