C# - 获取;放;保持NULL [重复]

Posted

技术标签:

【中文标题】C# - 获取;放;保持NULL [重复]【英文标题】:C# - get; set; stay NULL [duplicate] 【发布时间】:2019-12-30 18:22:33 【问题描述】:

我有一些 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。为什么会发生这种情况?有什么方法可以解决它?

【问题讨论】:

您是否将窗口的数据源设置为实例? 如何设置DataContextThemedWindow @mm8 从我打开它的位置:var NewProducts = new NewProductsMenu DataContext = DataContext 然后NewProducts.Show(); @mm8 你说得对。我从我得到的旧答案中复制了这段代码(DataContext 部分),然后该人编辑了他们对正确用法的响应。感谢您的回答!我会尽快接受的。 【参考方案1】:

您需要将窗口的DataContext 设置为某处的NewProductsMenuVM 实例,例如在构造函数中:

public partial class NewProductsMenu : ThemedWindow

    public NewProductsMenu()
    
        InitializeComponent();
        DataContext = NewProductsMenuVM.Instance;
    

    ...
    public void saveToDB()
    
        string ProductName = NewProductsMenuVM.Instance.ProductName;
    

【讨论】:

以上是关于C# - 获取;放;保持NULL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c#将类实例传递为null而不是作为ref [重复]

c# IeNumerable 如果没有则返回[重复]

C# HasValue vs !=null [重复]

从被调用函数中获取调用函数名[重复]

C# NullChecking:a is null vs object.Equals(a, null) [重复]

使用从 int 到字符串 double 的字符串格式并保持小数 C# [重复]