将文本框绑定到属性

时间:2016-06-27 04:39:10

标签: c# wpf binding textbox

我想要的只是当用户更改文本框<DockPanel DataContext="{Binding MainWindow}"> <TextBox Text="{Binding Path=AlphaMin, NotifyOnTargetUpdated=True, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}" /> </DockPanel> 中的值时,属性<select class="yourStyle"> <option>option_1</option> <option>option_2</option> </select> 会更新。

代码背后:

:

XAML:

.

这应该是重复一百次,但是我已经完成了所有这些,并且对于源的这种单向更新,没有一个简单明了。所有MSN教程都将一些UIControl绑定到另一个,这是没有意义的,因为IntelliSense会告诉你如何做到这一点。

2 个答案:

答案 0 :(得分:3)

您的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的好方法。

答案 1 :(得分:1)

  1. <Window x:Name="MyWin"...>指定名称,然后将DataContext绑定更改为{Binding ElementName=MyWin}

  2. 将此NotifyPropertyChanged();更改为NotifyPropertyChanged("AlphaMin");