1

WPFモデルに頭を巻き付けようとしています。

アイテムのリストボックスがあります。リストボックス内の項目は文字列識別子です。これは正常に機能します。私が欲しいのは、現在選択されているアイテムの識別子が、囲んでいるコントロールのコードビハインドでアクセスできるようにすることです。

私はこれを持っています:

<ListBox.ItemTemplate>
 <DataTemplate>
   <StackPanel Width="320">
    <Label Content="{Binding Path=ShortName}" Style="{StaticResource ListHeader}"/>
      <TextBlock TextWrapping="Wrap" Text="{Binding Path=Description}" Style="{StaticResource ListText}" />
   </StackPanel>
 </DataTemplate>
 </ListBox.ItemTemplate>

そして、私は次のようなものを追加する必要があると思います:

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
    <Setter Property="" TargetName="">
     <Setter.Value>

     </Setter.Value>
   </Setter>
 </DataTrigger>

しかし、囲んでいるコントロールの一部であるプロパティ(つまり、外界)を設定するためにセッターを設定する方法については迷っています。私はこれをどういうわけか後ろ向きに持っていると思いますか?

4

2 に答える 2

1

リストボックスの外部から選択したリストボックスアイテムのプロパティにアクセスしようとしている場合は、コードビハインドで次の操作を実行できます。

CustomItem item = (CustomItem)listBox1.SelectedItem;
MessageBox.Show(item.ShortName);

そして、xamlは次のとおりです。

<ListBox Height="100" Name="listBox1">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Name="stackPanel1">
                    <Label Content="{Binding Path=Shortname}"/>
                    <TextBlock Text="{Binding Path=Description}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

選択したアイテムをリストボックスからオブジェクトタイプにキャストしてから、オブジェクトのプロパティにアクセスします。

これがあなたが求めていたものであることを願っています。

于 2009-05-13T08:04:39.107 に答える
1

SelectedValuePathプロパティを使用してみましたか?

ItemsSourceプロパティにたとえばCustomersのリストがあり、SelectedValuePathをNameに設定すると、SelectedValueプロパティはcustomerではなくCustomerの名前を返します...

コードビハインドでは、SelectedValueはNameになり、SelectedItemはCustomerオブジェクトを返します。私の例では。

これが何らかの形で役立つことを願っています。

幸運を!

于 2009-05-13T08:19:17.553 に答える