gpt4 book ai didi

c# - 在 GridViewColumn 按钮的单击事件处理程序中获取绑定(bind)项

转载 作者:行者123 更新时间:2023-11-30 21:58:48 24 4
gpt4 key购买 nike

我正在尝试制作一个应用程序来显示星期几和您工作日的开始/结束作为练习。

所以我用这些元素和绑定(bind)创建了 XAML:

<StackPanel Grid.Row="1" Margin="0,0,0,0" >
<ListView ItemsSource="{Binding TimeListView}">
<ListView.View>
<GridView>
<GridViewColumn Width="200" Header="Day"
DisplayMemberBinding="{Binding Date}" />
<GridViewColumn Width="200" Header="Time"
DisplayMemberBinding="{Binding Time}" />
<GridViewColumn Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button x:Name="EditEntry" Content="Edit" Click="EditClick" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>

在我的 EditClick 中我有这段代码:

private void EditClick(object sender, RoutedEventArgs e)
{
MessageBox.Show("Sender: " + sender.ToString());
}

所以我的问题是:如何在我的 EditClick 函数中获取同一行中的日期和时间数据?

最佳答案

最简单的方法是使用 DataContext property发件人按钮。它将包含绑定(bind)到 current("parent") 的项目行:

public MainWindow()
{
InitializeComponent();

this.TimeListView = new ObservableCollection<Item>(new Item[]
{
new Item(),
new Item()
});

this.DataContext = this;
}

public ObservableCollection<Item> TimeListView
{
get;
private set;
}

private void EditClick(object sender, RoutedEventArgs e)
{
var button = (Button)sender;

var item = (Item)button.DataContext;

MessageBox.Show("Item is: " + item.ToString());
}

项目类别:

public class Item
{
public Item()
{
this.Day = DateTime.Now.DayOfWeek;
this.Time = DateTime.Now.TimeOfDay;
}

public DayOfWeek Day { get; set; }

public TimeSpan Time { get; set; }

public override string ToString()
{
return String.Format("{0}, {1}", this.Day, this.Time);
}
}

关于c# - 在 GridViewColumn 按钮的单击事件处理程序中获取绑定(bind)项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29831094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com