SelectedIndexを変更すると、データバインドされたListPicker SelectedItemが空白になる

data-binding listpicker silverlight silverlight-toolkit windows-phone-7
SelectedIndexを変更すると、データバインドされたListPicker SelectedItemが空白になる

Windows Phone 7アプリに* ItemsSource プロパティと SelectedIndex プロパティの両方がViewModelにバインドされているListPickerがあります。 SelectedIndexは Two Way *バインディングを使用しています。 項目とSelectedIndexは、アプリケーションの起動時に正しく入力されます。 ただし、ViewModelのSelectedIndexプロパティを変更すると、ListPickerのTextBoxは、選択されたアイテムがないかのように空白になります。 フルモードに移動して、リストから選択されたアイテムを確認すると、正しいアイテムが選択されています。

ListPicker xamlコードは次のとおりです。

これは私のViewModelの簡略版です:

[DataMember]
public ObservableCollection TheItems
{
    get
    {
        if (this.theItems == null)
        {
            this.theItems = new ObservableCollection();
        }

        return this.theItems;
    }
    set
    {
        this.theItems = value;
    }
}

[DataMember]
public int TheCurrentIndex
{
    get
    {
        return this.theCurrentIndex;
    }
    set
    {
        if (value != this.theCurrentIndex)
        {
            this.theCurrentIndex = value;
            NotifyPropertyChanged("TheCurrentIndex");
            NotifyPropertyChanged("IsSomeOtherPropertyEnabled");
        }
    }
}

次に、MainPage.xaml.csからの関連コードを示します(App_ViewModelChangedは、アプリケーションの起動時に実行される非同期処理が終了したときに呼び出されるイベントハンドラーです)。

private void App_ViewModelChanged(object sender, ViewModelChangedEventArgs e)
{
    BindToViewModel();
}

private void BindToViewModel()
{
    this.DataContext = this.ViewModel;
    this.ViewModel.IsViewEnabled = true;
}

private void SomeAsyncMethodCompleted(object sender, DetectCompletedEventArgs e)
{
    if (e.Error == null)
    {
        this.ViewModel.TheCurrentIndex = e.Result;
    }
}

この問題は常に発生しているわけではありません。 50%の確率で発生します。 これは、アプリケーションの有効期間中に一度し​​か発生しないようで、その後は二度と発生しません。 また、Silverlight Control Toolkitの2011年2月リリースから2011年8月リリースに切り替えたときに、問題が発生し始めました。 この問題は以前にありませんでした。

これは既知の問題ですか?

  0  0


ベストアンサー

さて、この奇妙な動作の理由は、2011年8月のSilverlight Control ToolkitのListPickerItemスタイルの小さな変更でした。

2011年8月リリースでは、次のようになります。

そして、これは2011年2月のリリースでの見た目です:

違いを見ます? 彼らは新しいリリースでListPickerItem Paddingを* 8 10 *に変更しましたが、どういうわけかそれが問題を引き起こしていました。 * 8 6 *に戻すと修正されます。 なぜか聞かないでください。

したがって、私のプロジェクトでは、実際にコントロールツールキットのGeneric.xamlファイルを変更せず、特定のListPickerリソースを変更して、次のようにListPickerItemスタイルの新しいパディングを指定しました。

このような小さな変化!

0


タイトルとURLをコピーしました