当我从列表框1中选择国家/地区时,第二个列表框应显示所选国家/地区的状态

时间:2012-11-09 06:39:00

标签: silverlight-5.0

我正在使用MVVM模式。

当我从列表框1中选择一个国家/地区然后选择第二个列表框 将显示所选国家/地区的状态。

国家/地区列表框

 <pmControls:pmListBox  x:Name="countryListBox"  Grid.Row="1" Margin="3" ItemsSource="{Binding Countries}" SelectedItem="{Binding SelectedCountry,Mode=TwoWay}"  >
                <pmControls:pmListBox.ItemTemplate >
                    <DataTemplate >
                        <Button  Command="{Binding DataContext.GetAllStatesCommand,ElementName=countryListBox}"  Margin="3" Width="100" Height="25" Content="{Binding Title}" >                                            
                        </Button>

                    </DataTemplate>
                </pmControls:pmListBox.ItemTemplate>
            </pmControls:pmListBox>

ListBox For State

<pmControls:pmListBox x:Name="stateListBox" Grid.Row="1" Margin="3" ItemsSource="{Binding States}">

                    <pmControls:pmListBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding StateTitle}" ></TextBlock>
                        </DataTemplate>
                    </pmControls:pmListBox.ItemTemplate>
                </pmControls:pmListBox>

在ModelView中,这些是我的命令:

获取所有国家/地区的命令:

public void getCountries()
{
    CountryServiceClient client = new CountryServiceClient();
client.GetCountryDetailsCompleted += (clientS, eventE) =>
{
    if (eventE.Error == null)
        {
        foreach (var item in eventE.Result)
        {
         countries.Add(item);
        }
    }
};
client.GetCountryDetailsAsync();

}

命令获取所选国家/地区的所有州:

public void ExecutegetAllStatesCommand(EventToCommandArgs args)
{
    selectedState = new States();
    states = new ObservableCollection<States>();
            int cntry_id = this.SelectedCountry.Country_Id;

            StateServiceClient client = new StateServiceClient();
            client.GetStatesCompleted += (clientS, eventE) =>
            {
                if (eventE.Error == null)
                {
                    foreach (var item in eventE.Result)
                    {
                        states.Add(item);

                    }
                }
            };

        client.GetStatesAsync(cntry_id);
        }

这里我在列表状态中正确获取了数据,但它没有出现在Xaml上。 请帮忙。

1 个答案:

答案 0 :(得分:0)

您提到在viewmodel中正确设置了'状态',在这种情况下问题可能是以下之一:

  1. 我注意到你绑定到'States'(大写S),你的代码设置为'states'(小写S)。
  2. 您是否为viewmodel实现了INotifyPropertyChanged并调用了propertychanged事件处理程序
  3. 尝试处理您要添加状态的CollectionChanged的{​​{1}},因为在添加项目时,propertieschanged不会自动触发。