簡體   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