2012-03-13 38 views
0

我有一个绑定到一个ObservableCollection一个ListBox:更改标签内容基于列表框选择

<ListBox Name="ListBoxItemsList"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid Margin="0" FlowDirection="RightToLeft"> 
       <Button Content="Add me!" Click="AddItem" /> 
       <TextBlock Text="{Binding Path=name}" /> 
       <TextBlock Text="{Binding Path=description}" /> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

的的ObservableCollection对象有几个属性,包括uniqueIDnamedescriptioncolourflavour。根据列表框中的选定项目,我想用选定项目的属性填充一些标签。此外,每个项目的按钮应该执行一个独特的操作(即添加一个相关项目到一个数组),但我不知道如何发送一个唯一的参数到AddItem()方法。我认为这将是一个常见用例,但我无法通过Google搜索找到任何东西。

谢谢。

+1

'我想要一些标签的细节来显示所选项目的属性'...'一些标签的细节显示'?? – 2012-03-13 14:32:36

+0

谢谢,我重写了这句话。 – dotancohen 2012-03-13 18:14:28

+0

你是usijng mvvm吗? – 2012-03-13 18:27:46

回答

1

根据ListBox中选定的项目,我想一些细节标签 显示所选项目的属性

您可以在ListBox.SelectedItem绑定到一个DependencyProperty,然后就结合这财产这些标签。

此外,每个项目的按钮应该执行一个独特的动作(即 添加相关的项目添加到阵列中的一个),但我想不出 如何独特的参数发送到的AddItem()方法。

您可以在产品ID添加到Button.Tag

<Button Content="Add me!" Click="AddItem" Tag={Binding Path=id} /> 

然后,只需获得按钮标签发件人

public void button_clicked(object sender, event e) { 
    int id = ((Button)sender).Tag as Int32; 
    ... 
} 

编辑:您还可以绑定完整Item而不仅仅是按钮标签的Id。

+0

或者,您可以从项目中公开一个ICommand属性,并将Button Command属性绑定到该项目(google DelegateCommand以获取更多详细信息)。 – Scroog1 2012-03-13 14:57:15

+0

谢谢丹尼尔!完善! – dotancohen 2012-03-14 17:34:51

相关问题