我想要的只是当用户更改文本框中的值时alphaMin_txt
,该属性AlphaMin
会更新。
后面的代码:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private string _alphaMin;
public string AlphaMin
{
get { return _alphaMin; }
set
{
if (value != _alphaMin)
{
_alphaMin = value;
NotifyPropertyChanged();
}
}
}
}
XAML:
<DockPanel DataContext="{Binding MainWindow}">
<TextBox Text="{Binding
Path=AlphaMin,
NotifyOnTargetUpdated=True,
Mode=OneWayToSource,
UpdateSourceTrigger=PropertyChanged}" />
</DockPanel>
这应该是副本的一百倍,但是我已经遍历了所有内容,并且对于此单向更新源来说,没有一个是简单明了的。所有MSN教程都将一些UIControl绑定到另一个UIControl,这是没有意义的,因为IntelliSense向您展示了如何做到这一点。
您的绑定DockPanel
可能有误DataContext
。DataContext应该在窗口级别设置。
<Window ... DataContext="{Binding RelativeSource={RelativeSource Self}}" ..>
当然,这是假设您的XAML是MainWindow.xaml。
如果您对MainWindow的其余部分拥有不同的DataContext,则可以执行以下操作:
<TextBox Text="{Binding
RelativeSource={RelativeSource AncestorType=Window},
Path=AlphaMin,
NotifyOnTargetUpdated=True,
Mode=OneWayToSource,
UpdateSourceTrigger=PropertyChanged}" />
当然,您应该删除DockPanel的DataContext。
您后面的代码是正确的;无需更改。使用CallerMemberName
是实现的好方法INotifyPropertyChanged
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句