2

以下の XAML バインディングでは、選択したアイテムがコンボボックスに表示されません (具体的には、現在のタイプがサイトに表示されません)。caliburn マイクロ フレームワークと DevForce Ideablade を使用しています。MySite は Ideablade エンティティです。

<ComboBox Grid.Column="3" Grid.Row="3" 
          ItemsSource="{Binding MySiteTypes}"
          DisplayMemberPath="description"
          SelectedItem="{Binding MySite.SiteType, Mode=TwoWay}"
          SelectedValuePath="description"/>

ViewModel のコード:

    private BindableCollection<SiteType> _mySiteTypes;
    public BindableCollection<SiteType> MySiteTypes
    {
        get { return _mySiteTypes; }
        set { _mySiteTypes = value; NotifyOfPropertyChange(() => MySiteTypes); }
    }

コンボボックスでサイト タイプを設定すると (タイプはドロップダウンに表示されます)、タイプが正しく表示され、データベース内のタイプが変更されます。何が欠けているのですか?既存のタイプを最初に表示したくないのはなぜですか?

4

3 に答える 3

2

ComboBox での私の経験から、この種の問題は多くの場合、タイミングに要約されます。SelectedItem バインディングが評価される前に、ItemSource (MySiteTypes) を使用できますか?

于 2011-05-09T10:56:15.910 に答える
2

わかりました、私は解決策を見つけました (マイルズ J は近かったです):

itemsource からのアイテムが読み込まれる前に、選択されたアイテムが評価され、選択されたアイテムが表示されなくなります。MySiteTypes を入力する非同期クエリが完了した後、MySite の NotifyOfPropertyChange を呼び出す必要がありました。

于 2011-05-09T11:12:26.913 に答える
0

アイテムはロードされていますか?テキスト プロパティを表示するには、DataTemplate を使用する必要があるかもしれません。

それらが文字列の場合、最近同様の問題が発生し、コンバーターを使用して selectedIndex を使用する必要がありました。

Silverlight 4 の ComboBox のコンバーター

于 2011-05-09T10:01:32.830 に答える