Привязка Silverlight MVVM и использование свойства расширенного класса - PullRequest
0 голосов
/ 08 июня 2011

У меня есть класс со свойством city и country, который я расширяю, чтобы объединить два значения.

public class Area
{
public string City;
public string Country;
}

Это предоставляется Silverligt службой RIA, и у меня есть расширение

public partial class Area
{
public string AreaString
{
get { return City + ", " + Country;}
}

В моем XAML сетка данных использует AreaString

<sdk:DataGrid AutoGenerateColumns="False" 
                      ItemsSource="{Binding Path=AreaCollection}"
                      Name="dataGrid1" Width="Auto">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn CanUserReorder="True" IsReadOnly="True"  Width="Auto" Binding="{Binding Path=AreaString}" />                
            </sdk:DataGrid.Columns>
        </sdk:DataGrid>

Эта сетка данных связана с формой данных, где я могу редактировать свойства Country и City с помощью двусторонней привязки.Но как мне обновить таблицу данных с помощью новых значений?Для запуска нового получения свойства AreaString.

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Когда вы касаетесь города или страны, вы также должны уведомить событие PropertyChanged для AreaString.Чтобы добиться этого, вы также должны заставить Area реализовать INotifyPropertyChanged Пример использования здесь .

1 голос
/ 08 июня 2011

Добавьте OnPropertyChanged, как показано ниже, после реализации интерфейса INotfiyPropertyChanged:

public partial class Area
{
    public string AreaString
    {
        get 
        { 
            return City + ", " + Country;
            OnPropertyChanged("AreaString");
        }
    }
}

Вы также должны добавить OnPropertyChanged("AreaString"); в Город И Страна установщиков.

Обновление

Альтернативой этому является расширение либо частичных методов OnCityChanged, либо OnCityChanging, существующих в вашей сущности.Нравится:

partial void OnCityChanged()
{
    OnPropertyChanged(new PropertyChangedEventArgs("AreaString"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...