XAML和C#中的Textblock / Textbox

时间:2015-08-18 22:34:27

标签: c# wpf xaml textbox

我是编程的完整“周末战士”所以请温柔地对待我,请...

我想实现一个简单的任务,我在普通的C#中没有问题(TextBox.Text =“Something”;)

我在XAML中有一个文本框和一个文本块,我想从C#中填充它们,这很简单 - 运行Web应用程序并从C#代码中提取预定义的字符串。我一直在寻找2天,但找不到直接的答案。我不想要任何触发器(按钮),只需填写例如使用C#字符串加载的文本框。 XAML和C#端的简单代码示例将不胜感激!

干杯,

纱纱

2 个答案:

答案 0 :(得分:0)

不确定我是否理解你的问题...

<!--xaml-->
<TextBox x:Name="txtMyTextBox"/>

// C#
// Window constructor
public MyWindow()
{
    InitializeComponent();
    txtMyTextBox.Text = "Something";
}

答案 1 :(得分:0)

实现您尝试实现的目标(如果我理解正确)的一种简单方法是将UI元素添加到窗口并为每个元素设置Name。这样,您可以在代码隐藏中访问它们,如下所示。

<Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <Grid>
        <TextBox Name="TextBox1" HorizontalAlignment="Left" Height="23" Margin="37,37,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
        <TextBlock Name="TextBlock1" HorizontalAlignment="Left" Margin="48,100,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Height="103" Width="239"/>

    </Grid>
</Window>

虽然有更多“精炼”方法可以实现相同目标,但是一旦您在xaml中命名了UI元素,就可以像代码隐藏中的其他对象实例一样访问它们。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            TextBox1.Text = "Hello TextBox1!";
            TextBlock1.Text = "Hello TextBlock1!";
        }
    }
}