2012-04-22 193 views
-1

使用以下XAML,我可以如何檢索值的說<TextBlock/SenderName>或任何其他控件嵌套在堆棧面板取決於列表視圖當前選定的項目?在C#從ListView獲取價值

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> 

回答

2

如果您使用的是MVVM方法那麼你的ListView的ItemsSource綁定到你的視圖模型的屬性。要訪問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}" /> 

如果你正在尋找從代碼隱藏做到這一點,您可以訪問ItemListView的SelectedItem成員應該是當前選定項目所綁定的對象。

最後,如果你要綁定使用的ElementName和的SelectedItem

<TextBlock Text="{Binding ElementName=ItemListView, Path=SelectedItem.SenderName}"/> 
另一個控制,你可以訪問它的控制
0

不要理解爲所有的,但我想你的意思是,用戶可以在一個表中選擇一個文本塊,並希望藉此textblock`s值。如果是這樣,你可以做簡單:

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; 
     } 
    } 
}