文本框显示为空 WPF

Textbox showing as null WPF

我有 3 个文本框,用户可以修改它们以更改 window 的某些颜色的 RGB 颜色。为了给他们一个可视化效果,我正在做的是在所述文本框旁边有一个框,显示他们使用文本框中的所述 RGB 值制作的颜色。为此,我将所有 3 个文本框的 TextChanged 事件设置为一种方法,该方法从 3 个文本框获取文本,使用 TryParse 将它们转换为整数,将数字分配给画笔,然后将画笔分配给框,以便用户可以看到它。 XAML 看起来像这样:

<TextBox Name="ColorPickerDisplayRed" Background="Transparent"
         BorderBrush="Transparent"
         FontFamily="Moon 2.0"
         Foreground="#6BAAFF"
         Text="255"
         TextAlignment="Center"
         Margin="0, -1.2, 0, 0"
         TextChanged="UpdateColorPickerDisplay"/>

我为绿色和蓝色复制并粘贴了这个,所以除了文本框的名称外,其他一切都是一样的。然后,为了得到整数值,我有这个:

private void UpdateColorPickerDisplay(object sender, TextChangedEventArgs e)
    {

        int R;
        int G;
        int B;

        if (int.TryParse(ColorPickerDisplayRed.Text, out R)) ;
        if (int.TryParse(ColorPickerDisplayGreen.Text, out G)) ;
        if (int.TryParse(ColorPickerDisplayBlue.Text, out B)) ;

        var brush = new SolidColorBrush(Color.FromArgb(255, (byte)R, (byte)G, (byte)B));
        ColorPickerDisplay.Background = brush;
    }

但是当我 运行 它时,我收到一条错误消息“ColorPickerDisplayGreen 为空。”。然后我尝试将每个框的文本设置为测试并得到相同的错误。我对所有 3 个文本框都进行了尝试,但只对红色有效。是因为我从所有 3 个文本框调用相同的方法吗?

解决了,不知道TextChanged被立即调用了。

添加 ?在访问文本之前 属性 & 它会解决问题

            int R;
            int G;
            int B;

            if (int.TryParse(ColorPickerDisplayRed?.Text, out R)) ;
            if (int.TryParse(ColorPickerDisplayGreen1?.Text, out G)) ;
            if (int.TryParse(ColorPickerDisplayBlue?.Text, out B)) ;

            var brush = new SolidColorBrush(Color.FromArgb(255, (byte)R, (byte)G, (byte)B));
            ColorPickerDisplayRed.Background = brush;