1

私はMVVMパターンを使用しています。

リストボックス1から国を選択すると、2番目のリストボックスに選択した国の州が表示されます。

国のリストボックス

 <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、propertychanged イベント ハンドラーを呼び出しましたか
  3. 項目を追加するときに propertychanged が自動的にトリガーされないため、状態を追加するCollectionChangedのを処理してみてください。ObservableCollection
于 2012-11-10T01:14:13.117 に答える