私はItemsControl
を持っています。これは私のviewmodelのリストからオブジェクトを表示しています。ユーザーがItemsControlの項目をクリックすると、Popup
を表示するコードもあります。しかし私はクリックされたアイテムから実際のオブジェクトを取得してそのプロパティを読み取ってPopup
に表示する方法を知らない。ItemsControlからクリックしたオブジェクトを取得し、Popupにそのプロパティを設定します。
私は(ItemsControl
で私の項目を表示するために使用される)Button
ためClick
イベントハンドラを持っていると私はボタンが目的のオブジェクトが含まれていますが、どうやらそうでない場合は、デバッガで見てみました。
他にどのようにオブジェクトを取得し、ポップアップにそのプロパティを設定できますか?
<ItemsControl ItemsSource="{Binding RecipientsNames}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button x:Name="btnConvoContact" Click="BtnConvoContact_Click"
Background="White" Foreground="Black" Cursor="Hand"
Width="Auto" Height="14" Padding="0" BorderThickness="0" Margin="0 0 6 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBlock Text="{Binding Path=Name}" FontSize="12" Margin="0 -2 0 -2"/>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
は、あなたのポップアップがXAMLで定義されていますか? – dymanoid
クリックされたボタンは、 'DataContext'プロパティに実際のデータオブジェクトを持つ必要があります。 ItemsBoxの代わりにListBoxを使用し、ListBoxが選択範囲をサポートしているので、PopItをSelectedItemプロパティにバインドすることをお勧めします。 – ASh
はい、PopupはXAMLです。 しかし、ItemsControlを設定したのと同じ方法でListBoxを設定することができます(すべてのアイテムはStackPanelに含まれています)。 ItemsControlをListBoxに置き換えるだけで十分ですか、それとももっと変更を加える必要がありますか? – Val