1

我正在使用 MVVM 模式。

当我从 listbox1 中选择一个国家时,第二个列表框将显示所选国家的状态。

国家列表框

 <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>

状态列表框

<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 中。请帮忙。

4

1 回答 1

0

您提到在视图模型中正确设置了“状态”,在这种情况下,问题可能是以下之一:

  1. 我注意到您正在绑定到“States”(大写 S),并且您的代码设置为“States”(小写 S)。
  2. 您是否INotifyPropertyChanged为 viewmodel 实现并调用 propertychanged 事件处理程序
  3. 尝试处理要添加 StateCollectionChangedObservableCollection,因为添加项目时 propertychanged 不会自动触发。
于 2012-11-10T01:14:13.117 回答