簡體   English   中英

如何從WPF中的按鈕內的StackPanel中獲取TextBlock的Text值

[英]How to get TextBlock's Text value out of a StackPanel inside a Button in WPF

我想知道如何從WPF中按鈕內的StackPanel內的TextBlock中獲取文本值,它非常像這樣:

public MainWindow()
{
    Image img = new Image();
    img.Source = new BitmapImage(new Uri("image.png"));

    StackPanel stackPnl = new StackPanel();
    stackPnl.Orientation = Orientation.Vertical;
    stackPnl.Margin = new Thickness(10);
    stackPnl.Children.Add(img);

    TextBlock txtBlck = new TextBlock();
    txtBlck.Text = "this is a test!";
    stackPnl.Children.Add(txtBlck);

    Button btn = new Button();
    btn.Content = stackPnl;
    btn.Click += test_click;
    myPanel.Children.Add(btn);
}

和test_click:

private void test_click(object sender, RoutedEventArgs e)
{
    txtBox.Text = (sender as Button).Content.ToString();
}

現在,當然,我單擊按鈕后得到的是這個System.Windows.Controls.StackPanel ,由於StackPanel是按鈕的實際內容,我想這很明顯,但是就像我說的那樣,我需要知道如何僅獲取TextBlock的Text值,因此在這種情況下txtBox應該顯示this is a test! 怎么做?,並預先感謝!

從我的頭開始:1.在本地存儲TextBlock的實例,並在需要時使用它。2.創建DependencyProperty並將其綁定到TextBlock。 那樣的話,您將在此DP中始終擁有最新價值。

希望能有所幫助。

最簡單的方法是

TextBlock txtBlck = new TextBlock();
txtBlck.Name = "SomeName";
txtBlck.Text = "this is a test!";

然后

private void test_click(object sender, RoutedEventArgs e)
{
    txtBox.Text = SomeName.Text;
}

按鈕Content是您的堆棧面板而不是您的文本塊,然后要替換該文本塊內容,您需要:

txtBox.Text =(發送為Button).Content;

這樣

txtBox.Text = txtBlck.Text;

如果您非常想從textblock中獲取文本,則不要公開使用textblock。

public TextBlock txtBlck = new TextBlock();
        public MainWindow()
        {
            InitializeComponent();


            StackPanel stackPnl = new StackPanel();
            stackPnl.Orientation = Orientation.Vertical;
            stackPnl.Margin = new Thickness(10);


            txtBlck.Text = "this is a test!";
            stackPnl.Children.Add(txtBlck);

            Button btn = new Button();
            btn.Content = stackPnl;
            btn.Click +=btn_Click;
            myPanel.Children.Add(btn);
        }

        void btn_Click(object sender, RoutedEventArgs e)
        {
            txtBox.Text = txtBlck.Text;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM