繁体   English   中英

使用项目模板获取列表框项目的值

[英]Get value of listbox item with item template

我有一个窗口,该窗口具有名为IpList ObervableCollection<string>类型的ObervableCollection<string>的属性,并将该窗口的DataContext属性设置为该窗口本身,以便可以将XAML元素的属性绑定到该窗口的属性。 在我的窗口中的一个XAML元素是一个ListBox有一个ItemTemplate

<ListBox
    ItemsSource="{Binding IpList}"
    x:Name="lbIps">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <Button
                    Click="lbIps_bnClose_Click"
                    Content="X"
                    DockPanel.Dock="Left" />
                <TextBlock
                    Text="{Binding}" />
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我希望单击“ X”按钮时将其删除。 我的第一个尝试是获取选定的项目索引并将其从列表中删除。 但是,当我仅单击按钮时,没有选择任何项目。 我的第二次尝试是按值而不是索引删除项目,但是我不知道如何获取包含单击按钮的列表框项目的值。 所以我的问题是: 是否有可能获得包含单击按钮的列表框项目的索引/值? 如果是这样,我该怎么做? 还有另一种方法来删除单击的“ X”按钮的父列表框项吗?

private void lbIps_bnClose_Click(object sender, RoutedEventArgs e)
{
   var vm = this.DataContext as [yourViewModelName];

   var button = sender as Button;

   var item = (string)button.DataContext;

   vm.IpList.Remove(item);
}

如果您不使用MVVM:

将其放入点击事件

string s=(string)((sender as Button).DataContext);
IpList.Remove(item); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM