-1

<TextBlock/SenderName>次のXAMLを使用して、リストビューで現在選択されているアイテムに応じて、たとえば、スタックパネルにネストされている他のコントロールの値を取得するにはどうすればよいですか?C#で

XAML

<ListView x:Name="ItemListView"  
      ItemsSource="{Binding}"
      Margin="1041,120,85,68" SelectionChanged="ListView1_SelectionChanged">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding SenderName}" 
                   FontSize="20" Margin="15,0,0,0" HorizontalAlignment="Right" />
                <TextBlock Text="{Binding Value}"  
                   FontSize="18" Margin="5,0,0,0" TextWrapping="Wrap" HorizontalAlignment="Right" />
                <TextBlock Visibility="Collapsed" Text="{Binding StreamId}" />
                <TextBlock Text="{Binding DateTime}" 
                   FontSize="16" Margin="15,0,0,0" HorizontalAlignment="Right" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
4

2 に答える 2

2

MVVMアプローチを使用している場合、ListViewのItemsSourceはViewModelのプロパティにバインドされます。ListBoxのSelectedItemから値にアクセスするには、SelectedItemをビューモデルの別のメンバーにバインドします。何かのようなもの:

コード:

public class ViewModel
{
    public ObservableCollection<MyListViewItem> Items {get;set;}
    public MyListViewItem SelectedListItem {get;set;}
}

XAML:

<ListView DataContext="{Binding Path=myViewModel}" 
     ItemsSource="{Binding Path=Items}"
     SelectedItem="{Binding Path=SelectedListItem}" />

コードビハインドから実行する場合はSelectedItem、現在選択されているアイテムがバインドされているオブジェクトであるItemListViewのメンバーにアクセスできます。

最後に、別のコントロールからコントロールにバインドする場合は、ElementNameとSelectedItemを使用してそのコントロールにアクセスできます。

<TextBlock Text="{Binding ElementName=ItemListView, Path=SelectedItem.SenderName}"/>
于 2012-04-22T15:31:34.037 に答える
0

すべてを理解しているわけではありませんが、ユーザーがリストボックスでテキストブロックを選択できることを意味し、このテキストブロックの値を取得したいと思います。もしそうなら、あなたはこれを簡単に行うことができます:

    string sel = Listview1.SelectedItem.Text;
string value = null;
foreach ( con in Stackpanel.Controls) {
    if ((con) is Textblock) {
        if (con.Name == sel) {
            value = ((con)Textblock).Text;
            break; 
        }
    }
}
于 2012-04-22T15:17:14.993 に答える