Как получить фиктивные данные в виде списка во время разработки и реальные данные во время выполнения в WPF - PullRequest
3 голосов
/ 31 июля 2010

Я использую Visual Studio 2008 для написания приложения WPF. Я новичок в WPF и хотел бы видеть содержимое моего списка во время разработки, чтобы я мог видеть, что я делаю в xaml, но связываться с моими реальными данными во время выполнения.

Мои данные - это наблюдаемый набор объектов простого типа модели, который предоставляет несколько свойств, таких как Id, Title, Description и т. Д.

Во время выполнения мне нужно иметь возможность получить доступ к коллекции источника данных из кода, чтобы я мог динамически изменять содержимое

В настоящее время у меня есть:

<Window x:Class="EktronDataUI.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:EktronDataUI"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <ObjectDataProvider ObjectType="{x:Type local:SmartFormDefinitionProvider}" x:Key="formsProvider" MethodName="GetMockData" />
    </Window.Resources>
    <Grid>
        <DockPanel>
            <TextBlock DockPanel.Dock="Top">Hello WPF</TextBlock>
            <ListView Name="myListView" ItemsSource="{Binding Source={StaticResource formsProvider}}">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}" />
                        <GridViewColumn Header="Title" DisplayMemberBinding="{Binding Title}" />
                    </GridView>
                </ListView.View>
            </ListView>
        </DockPanel>
    </Grid>
</Window>

Который показывает мне мои фиктивные данные во время выполнения, но не во время разработки. Представление списка - это просто пустой прямоугольник в конструкторе, хотя я вижу текст «Hello WPF»

Какой типичный способ справиться с этим?

Edit:

Должно ли это показывать мне мои данные во время разработки в том виде, в каком они есть? Я обнаружил, что если я вырезал представление списка из xaml, а затем вставил его обратно, я вижу свои данные, они отображаются не совсем верно, но они там. Но в тот момент, когда я строю его, он исчезает и не возвращается

1 Ответ

4 голосов
/ 31 июля 2010
<Window x:Class="EktronDataUI.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:local="clr-namespace:EktronDataUI" 
xmlns:design_vm="clr-namespace:Company.Product.ViewModel.Design"
mc:Ignorable="d" 
Title="Window1" Height="300" Width="300"> 
<Window.Resources> 
    <ObjectDataProvider ObjectType="{x:Type design_vm:MyListViewModel}" x:Key="DesignTime_DataSource" d:IsDataSource="True"/>
</Window.Resources> 
<Grid d:DataContext="{StaticResource DesignTime_DataSource}> 
    <DockPanel> 
        <TextBlock DockPanel.Dock="Top">Hello WPF</TextBlock> 
        <ListView Name="myListView" ItemsSource="{Binding Path=ListItems"> 
            <ListView.View> 
                <GridView> 
                    <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}" /> 
                    <GridViewColumn Header="Title" DisplayMemberBinding="{Binding Title}" /> 
                </GridView> 
            </ListView.View> 
        </ListView> 
    </DockPanel> 
</Grid> 

Укажите подкласс класса, который вы используете в качестве datacontext, и подключите его как datacontext времени разработки, используя пространство имен d, как в моем примере.У меня есть проект MVVM с пространством имен для моих view-моделей, и у каждого класса есть подкласс, который я использую для дизайна.Эти подклассы имеют конструкторы, которые заполняют их данными времени разработки.Текст данных для времени выполнения может быть задан в коде позади или через добавление данных.У модели представления есть наблюдаемая коллекция для элементов списка, а в модели конструктора это заполнено образцами данных в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...