WPF-设置为只读时,TextBox无法正确绑定

时间:2018-07-20 23:18:01

标签: c# wpf binding textbox

我有一个TextBox,我正在使用它添加(仅添加而不读取)文件路径到DB中。当用户选择某些文件(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。

我正在使用Entity Framework,但认为这并不重要。

问题:如何以编程方式将文本添加到TextBox控件中,该控件是只读的并且能够绑定它。

编辑:我知道了问题所在。当我在之后上将焦点放在TextBox上时,从代码后面设置了它的Text属性,它可以工作。我想它必须在我从代码后台执行操作时通知Text已更改。该怎么做?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用OneWay绑定?

MSDN读取:

  

OneWay (当绑定源(源)更改时)更新绑定目标(target)属性。如果要绑定的控件隐式为只读

我认为这可以解决您的情况。

target 是您的TextBox Text属性,而 source 是您在ViewModel上的FilePath属性。

使用:

Text="{Binding FilePath, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"

编辑

此答案假设您已在ViewModel上实现了INotifyPropertyChanged

编辑

正确的绑定模式是OneWayToSource。由OP确认。