Silverlight MVVM绑定和使用扩展类属性

时间:2011-06-08 10:08:59

标签: silverlight mvvm

我有一个带有城市和乡村财产的课程,我将其扩展为两个值。

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

这是由RIA服务公开给Silverligt的,我有一个扩展名

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属性的新get。

2 个答案:

答案 0 :(得分:2)

当您触摸City或Country时,您也应该通过PropertyChanged事件通知AreaString。 为了实现这一目标,您还应该使区域实施INotifyPropertyChanged 关于如何使用它的示例是here

答案 1 :(得分:1)

在实施INotfiyPropertyChanged接口后添加OnPropertyChanged,如下所示:

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

您还应在城市 AND 国家/地区设置器中添加OnPropertyChanged("AreaString");

<强>更新

另一种方法是扩展您的实体存在的OnCityChangedOnCityChanging部分方法。像:

partial void OnCityChanged()
{
    OnPropertyChanged(new PropertyChangedEventArgs("AreaString"));
}