1

私はバインディングを理解しようとしているので、試してテストするための非常に単純なプログラムを思いつきました。

MainWindow に次の要素があります。

<ComboBox Name="comboBox1" ItemsSource="{Binding ComboItems}" />

私のコードには、次の監視可能なコレクションがあります。

private readonly ObservableCollection<string> comboItems = 
    new ObservableCollection<string>();
public ObservableCollection<string> ComboItems
{
    get {return comboItems; }
} 

コンボボックスが最初から MainWindow XAML にある限り、実行時の任意の時点でこの方法で項目を正常に追加できます。

ComboItems.Clear();
ComboItems.Add("Item");

私の質問は、ファイルからロードした場合、この ComboBox を更新するにはどうすればよいですか? ファイルを保存してロードする次のコードがあります。

File.WriteAllText("ComboBox.xaml", saveComboBox)

これは私の保存の最後の行です。この議論には関係ないように思われる他のアイテムがあります。

ComboBox comboBox = System.Windows.Markup.Xamlreader.Load(stream) as ComboBox;

これにより、コンボボックスが正常に保存およびロードされます。私が今遭遇している問題は、コード:

ComboItems.Clear();
ComboItems.Add("Item");

動作しなくなりました。私がやろうとしている新しいプロジェクトのためにデータバインディングを学ぼうとしているところです。このプロジェクトでは、ユーザー インターフェイス用の xaml ファイルを読み込む必要があり、読み込み後に ComboBox を埋める必要があります。

この問題に対する最も簡単で効率的な解決策は何ですか?

4

1 に答える 1

1

XamlReaderがバインディングを保持するかどうかはわかりません。ドキュメントを読んでください。制限があります。とにかくこれを行うことはお勧めしません。バインディングがなくなった場合、コードで新しいバインディングを作成できますが、もちろんそれを保存する目的を部分的に無効にします。

于 2012-08-30T17:05:53.493 に答える