HumayunAhmed Ответов: 2

Как Привязать Информацию Текстового Файла К Datagrid С Помощью Caliburn.Микро


Я создаю программу адресной книги в WPF и хочу связать свой DataGridColumn с текстовым файлом, содержащим контактную информацию.
Но я не знаю, как это сделать. Пожалуйста, Кто-Нибудь, Помогите Мне...

Вот моя модель представления(ContactsViewModel.в CS):

using Caliburn.Micro;
using System.Windows;

namespace AddressBook {
public class ContactsViewModel : Screen {
   //What to do here ?
}
}


Вот код XAML(ContactsView.xaml):

<UserControl x:Class="AddressBook.ContactsView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <DataGrid FontSize="16" CanUserResizeColumns="False" SelectedIndex="1">
        <DataGrid.Columns>
            <DataGridTextColumn FontSize="14" Header="Name" Width="150"/>
            <DataGridTextColumn FontSize="14" Header="Mobile No." Width="170"/>
            <DataGridTextColumn FontSize="14" Header="Email" Width="200"/>
            <DataGridTextColumn FontSize="14" Header="Address" Width="240"/>
        </DataGrid.Columns>
    </DataGrid>

</UserControl>

Richard MacCutchan

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

2 Ответов

Рейтинг:
1

aliwpf

привет. если вы хотите использовать привязку данных в wpf , ваш класс модели реализует INotifyPropertyChanged. смотрите ниже:

public class ContactsViewModel : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, e);
        }
    }

    private string _firstName;
    public string FirstName
    {
        get { return _firstName; }
        set
        {
            if (_firstName != value)
            {
                _firstName = value;
                OnPropertyChanged(new PropertyChangedEventArgs("FirstName"));
            }
        }
    }
}

а ваш XAML:
<DataGrid x:Name="ContactsDataGrid" ItemsSource="{Binding}">
                                    <DataGrid.Columns>
                                        <DataGridTextColumn FontSize="14" Header="FirstName" Width="150" Binding="{Binding FirstName}"/>
                                    </DataGrid.Columns>
                                </DataGrid>

и, наконец, в вашем окне.xaml.cs:
ContactsDataGrid.DataContext=GetContacts();


Рейтинг:
1

Jym_M

Решение не является микро-способом Caliburn сделать это. Если вы хотите, чтобы CM выполнял вашу привязку, вам нужно создать BindableCollection<yourclass> SomeName и убедиться, что DataGrid является SomeName в XAML

<DataGrid x:Name="SomeName" />