[英]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.