我有一个文本框,我用它来添加(只添加而不是读取)文件路径到数据库中。文本属性是在用户选择某个文件(OpenFileDialog)时设置的。所以,我将它设置为只读状态,它将无法正确绑定。当我删除只读时,它工作正常。
<Button Name="btnAddFile" Content="+" HorizontalAlignment="Left" Width="23" Height="23" Click="AddFilePath"/>
<TextBox Name="tbxFilePath" Height="23" Text="{Binding FilePath}" Width="364" IsReadOnly="True"/>
当我用途:
Text="{Binding FilePath, Mode=OneWayToSource}"
它有时工作,但大多数时候它不工作(?!)。我可以使用TextBlock或Label,但我真的很想了解发生了什么,并使用TextBox。
我使用实体框架,但不认为这有什么关系。
问:如何以编程方式将文本添加到只读的TextBox控件并能够绑定它。
编辑:我发现了问题所在。当我在之后将焦点设置在TextBox上时,我从代码隐藏中设置了它的Text属性,它工作了。我猜当我从代码隐藏中设置它时,它必须通知文本被更改了。如何做到这一点?
1条答案
按热度按时间jyztefdp1#
您是否尝试过使用
OneWay
绑定?MSDN的内容如下:
OneWay当绑定源(源)更改时更新绑定目的(目的)属性.如果要绑定得控件是隐式 * 只读 * 得,则此类型得绑定适用.
我想你的情况也差不多了。
Text
属性,而 source 是ViewModel上的FilePath
属性。用途:
编辑
这个答案假设您已经在ViewModel上实作了
INotifyPropertyChanged
。编辑
正确的绑定模式为
OneWayToSource
。已由OP确认。