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。为什么会发生这种情况?有什么方法可以解决它?
【问题讨论】:
您是否将窗口的数据源设置为实例? 如何设置DataContext
的ThemedWindow
?
@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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章