C# - 获取;放; 保持 NULL

我有一些 wpf 窗口、一些类和一个视图模型。不知何故,当我告诉它时,输入字段的值不会绑定,并且视图模型中的值保持为 NULL。


我实际上继续使用该值,但在调试过程中意识到它有一个 NULL 值。


在输入窗口中:


<dx:ThemedWindow

    x:Class="DXEbayManager.NewProductsMenu"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"

    Title="NewProductsMenu" Height="200" Width="450">


    <StackPanel>

        <Grid>

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="1*" />

                <ColumnDefinition Width="3*" />

            </Grid.ColumnDefinitions> 

            <Label Content="Product Name: " Grid.Column="0"/>

            <TextBox x:Name="ProductNameBox" Text="{Binding ProductName}" Grid.Column="1"/>

        </Grid>

    </StackPanel>

</dx:ThemedWindow>

在我的 ViewModel 中我有:


public class NewProductsMenuVM : ViewModelBase

    {

        public string ProductName { get; set; }

        public static NewProductsMenuVM Instance { get; } = new NewProductsMenuVM();

    }

我想在这里使用该值(其中为 NULL):


    public partial class NewProductsMenu : ThemedWindow

    {        

        public void saveToDB()

        {

            string ProductName = NewProductsMenuVM.Instance.ProductName;

        }

    }

我没有最好的调试技巧,但后面的值{get; set; }也已经是NULL了。为什么会发生这种情况?有什么方法可以解决它?


慕工程0101907
浏览 81回答 1
1回答

波斯汪

您需要将DataContext窗口的实例设置为NewProductsMenuVM某处的实例,例如在构造函数中:public partial class NewProductsMenu : ThemedWindow{&nbsp; &nbsp; public NewProductsMenu()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; InitializeComponent();&nbsp; &nbsp; &nbsp; &nbsp; DataContext = NewProductsMenuVM.Instance;&nbsp; &nbsp; }&nbsp; &nbsp; ...&nbsp; &nbsp; public void saveToDB()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; string ProductName = NewProductsMenuVM.Instance.ProductName;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP