【发布时间】:2010-11-18 23:19:24
【问题描述】:
我有一个文本框,其中包含一个必须在用户按下按钮时才绑定的字符串。在 XAML 中:
<Button Command="{Binding Path=PingCommand}" Click="Button_Click">Go</Button>
<TextBox x:Name="txtUrl" Text="{Binding Path=Url,UpdateSourceTrigger=Explicit, Mode=OneWay}" />
在代码隐藏中:
private void Button_Click(object sender, RoutedEventArgs e)
{
BindingExpression be = this.txtUrl.GetBindingExpression(TextBox.TextProperty);
be.UpdateTarget();
}
“be”始终为 NULL。为什么?
更新:
好的,经过多次尝试,这里有一些更新。
如果,我将模式设置为带有显式更新的 OneWay。我在 GetBindingExpression 的“be”对象中有一个 NullReferenceException。
如果,我使用显式更新将模式设置为空(默认为 TwoWay)。我有绑定获取值(string.empty),它每次都会擦除文本框中的所有内容。
如果,我将 Mode 设置为 OneWay,使用 PropertyChanged 当我在文本框中按下键时绑定的属性没有引发任何问题,一旦我单击按钮,我在“be”对象中有一个 NULLReferenceException。
如果,我将 Mode 设置为空(默认 TwoWay),使用 PropertyChanged 我有每次按下时都会引发的属性(GOOD)但我不希望每次用户按下键时都更改属性...但是仅当用户按下按钮时。
【问题讨论】:
-
be 对我来说不为空......
-
第一次单击按钮时它不为空。这是第二次。我没有明确删除绑定,这就是为什么如果某些行为可以删除我可能不知道的绑定,我会感到困惑。
-
所以这一次有效?另外,请抓住你的问题,以免它说它“总是”为空。
-
第一个、第二个、第三个和 ...
-
我一开始以为一直都是这样,但我尝试了很多东西,似乎第一次就奏效了。但是,现在因为我已经将绑定放回显式第一个,第二个和其他尝试不再起作用。几分钟前“be”为空并崩溃,现在绑定不起作用但“be”不再为空!阿格