C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: WPF ListBox から ListBox へ


(過去ログ 113 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■67010 / inTopicNo.1)  WPF ListBox から ListBox へ
  
□投稿者/ みさ (1回)-(2013/06/19(Wed) 11:53:30)

分類:[C#] 

開発環境:VisualStudio2010 (WPF)
使用言語:C#、xaml

下記のようなリストボックスの実装勉強中に悩んでいます。

///////////////////////////////////////////////////////////////

[ListBox_1] [追加ボタン] [ListBox_2]
[削除ボタン]


IFは上記のイメージ。
初期状態は、ListBox_1 は空。ListBox_2 は XmlDataProvider でリストをバインディング。

【★1】
追加ボタンで、ListBox_2 の選択内容を ListBox_1 に追加。(と同時に ListBox_2 からは削除)
削除ボタンで、ListBox_1 の選択内容を ListBox_2 に追加。(と同時に ListBox_1 からは削除)

といったことを実現したいです。

【★1】以降の実装方法がわからず悩んでいます。

以下xaml。

<Window.Resources>
<XmlDataProvider x:Key="ContactMeansList">
<x:XData>
<Kind xmlns="">
<Name>みかん</Name>
<Name>りんご</Name>
<Name>もも</Name>
<Name>ぶどう</Name>
<Name>なし</Name>
<Name>すいか</Name>
</Kind>
</x:XData>
</XmlDataProvider>
</Window.Resources>

<Grid>
<ListBox Height="100" HorizontalAlignment="Left" Margin="028,44,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" />
<ListBox Height="100" HorizontalAlignment="Left" Margin="372,45,0,0" Name="listBox2" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Source={StaticResource ContactMeansList}, XPath=/Kind/Name}" />
<Button Content="追加" Height="23" HorizontalAlignment="Left" Margin="222,56,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
<Button Content="削除" Height="23" HorizontalAlignment="Left" Margin="222,105,0,0" Name="button2" VerticalAlignment="Top" Width="75" />
</Grid>
引用返信 編集キー/
■67012 / inTopicNo.2)  Re[1]: WPF ListBox から ListBox へ
□投稿者/ Hongliang (61回)-(2013/06/19(Wed) 14:15:04)
XmlDataProviderは基本的に静的なデータを扱うための物で、動的に操作したいならObservableCollectionなどを使うべきです。

敢えてやるならこんな感じですかね。
・XmlDataProviderをXAMLで2つ定義し、それぞれのListBox.ItemsSourceにバインド。
・ボタンクリック時、SelectedItemで選択中のXmlElementを取得。
・FindResourceでXmlDataProvider2つを取得。
・片方のXmlDataProvider.DocumentにImportNodeしたXmlNodeを追加、もう片方からはRemoveChild。
引用返信 編集キー/
■67017 / inTopicNo.3)  Re[2]: WPF ListBox から ListBox へ
□投稿者/ みさ (2回)-(2013/06/20(Thu) 14:14:22)
No67012 (Hongliang さん) に返信
> XmlDataProviderは基本的に静的なデータを扱うための物で、動的に操作したいならObservableCollectionなどを使うべきです。
>
アドバイスありがとうございます。
XmlDataProviderを使わずに実装しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -