gpt4 book ai didi

wpf - 当文本框中未填写任何内容时,将 null 设置为 mvvm WPF 中的属性

转载 作者:行者123 更新时间:2023-12-02 05:45:12 24 4
gpt4 key购买 nike

我实现了一个文本框,它绑定(bind)到一个 View 模型。例如,我将文本框默认填写为“100”,但如果我将其更改为 10,该属性始终会正确设置。但是当我删除所有数字时,我希望该属性设置为空。但是什么都不填的时候就是不设置这个值,他只是保留最后一个值..

这是我的代码,viewmodel + xaml:

public double MaxTime
{
get
{
return maxTime;
}
set
{
maxTime = value;
OnPropertyChanged("MaxTime");
if (SelectedQuestionDropList != null)
{
foreach (QuestionCluster cluster in this.Examination.QuestionClusters)
{
if (cluster == SelectedQuestionDropList)
{
cluster.MaxTime = value;
}
}
}
}
}


<TextBox Height="23"
Visibility="{Binding Path=VisibleClusterDetails, Converter={StaticResource boolToVis},UpdateSourceTrigger=PropertyChanged}"
Text="{Binding Path=MaxTime,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
HorizontalAlignment="Right" Margin="0,511,601,0" Name="textBox2"
VerticalAlignment="Top" Width="120" />

最佳答案

这是一个有约束力的问题你必须做三件事

1) 将系统命名空间导入您的 xaml 文件(注意 sys 关键字):

xmlns:sys="clr-namespace:System;assembly=mscorlib"

2) 然后在您的绑定(bind)中,您需要告诉它在文本框中的值为 string.Empty 时发送 null(这是文本框中没有任何内容时的值,这就是为什么它不起作用,因为 string.空不能转换为 double )。通过这样做:

<TextBox Text={Binding MaxTime,TargetNullValue={x:Static sys:String.Empty}}/>

3) 将您的 ViewModel MaxTime 属性更改为类型 double?

关于wpf - 当文本框中未填写任何内容时,将 null 设置为 mvvm WPF 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5854860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com