我正在尝试制作一个显示星期几以及工作日开始/结束的应用程序作为练习。
所以我用这个元素和绑定(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/