[英]WPF How to access label in the grid?
我在代码的网格中创建项目。
Border panel = new Border();
Grid.SetColumn(panel, 3);
Grid.SetRow(panel, 3);
StackPanel stack = new StackPanel();
panel.Child = stack;
Label hasta = new Label();
hasta.Content = str_hasta;
stack.Children.Add(hasta);
Label hastalik = new Label();
hastalik.Content = str_hastalik;
stack.Children.Add(hastalik);
grd_gunluk.Children.Add(panel);
单击此网格单元格时,我想获取标签文本。 我该怎么做?
我认为,您期望如此,
public MainWindow()
{
InitializeComponent();
Border panel = new Border();
Grid.SetColumn(panel, 3);
Grid.SetRow(panel, 3);
StackPanel stack = new StackPanel();
panel.Child = stack;
Label hasta = new Label();
hasta.Content = "Test";
hasta.PreviewMouseLeftButtonDown += PreviewMouseLeftButtonDownEvent;
stack.Children.Add(hasta);
Label hastalik = new Label();
hastalik.Content = "MM";
hastalik.PreviewMouseLeftButtonDown += PreviewMouseLeftButtonDownEvent;
stack.Children.Add(hastalik);
Grid.Children.Add(panel);
}
protected void PreviewMouseLeftButtonDownEvent(object sender, EventArgs e)
{
MessageBox.Show(((Label)sender).Content.ToString());
}
获取标签框值的“堆栈”面板单击事件很复杂。 因此,使用数据网格并使用模型进行绑定
UI页面
<DataGrid Name="DataGrid" IsReadOnly="True" >
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/>
</Style>
</DataGrid.ItemContainerStyle>
</DataGrid>
代码页
public MainWindow()
{
InitializeComponent();
List<Student> stud = new List<Student> {
new Student {RollNo = 1, Name = "Ankur", marks = 34 },
new Student {RollNo = 2, Name = "Dhrumit", marks = 79},
new Student {RollNo = 3, Name = "Mannan", marks = 67 }};
DataGrid.ItemsSource = stud;
}
public class Student
{
public int RollNo { get; set; }
public string Name { get; set; }
public double marks { get; set; }
}
private void Row_DoubleClick(object sender, MouseButtonEventArgs e)
{
// execute some code
var student = (Student)((System.Windows.Controls.DataGridRow)sender).Item;
MessageBox.Show("RollNo = " + student.RollNo + " Name = " + student.marks + " marks = " + student.marks);
}
UI图片
您可以处理Border
的MouseLeftButtonDown
事件:
Border panel = new Border();
Grid.SetColumn(panel, 3);
Grid.SetRow(panel, 3);
StackPanel stack = new StackPanel();
panel.Child = stack;
Label hasta = new Label();
hasta.Content = str_hasta;
stack.Children.Add(hasta);
Label hastalik = new Label();
hastalik.Content = str_hastalik;
stack.Children.Add(hastalik);
grd_gunluk.Children.Add(panel);
panel.MouseLeftButtonDown += (ss, ee) =>
{
string a = hasta.Content.ToString();
string b = hastalik.Content.ToString();
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.