繁体   English   中英

WPF如何访问网格中的标签?

[英]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图片

UI图片

您可以处理BorderMouseLeftButtonDown事件:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM