正如MSDN所说:
可选地,句点(。)路径可用于绑定到当前 资源。例如,Text =“{Binding}”等同于Text =“{Binding 路径=}”。
但在下面的两个例子中,我遇到了不同的行为:
首先
<StackPanel>
<TextBox Text="{Binding Path=MyString, UpdateSourceTrigger=PropertyChanged}"/>
<Grid DataContext="{Binding Path=MyString}">
<TextBox Text="{Binding}"></TextBox>
</Grid>
</StackPanel>
此示例使用message:
引发异常“双向绑定需要Path或XPath。”
第二
<StackPanel>
<TextBox Text="{Binding Path=MyString, UpdateSourceTrigger=PropertyChanged}"/>
<Grid DataContext="{Binding Path=MyString}">
<TextBox Text="{Binding Path=.}"></TextBox>
</Grid>
</StackPanel>
此示例正常运行,第一个TextBox文本更改反映到viewmodel,第一个TextBox的文本也发生了更改,但第二个TextBox文本更改后未反映到viewmodel(或第一个TextBox)!
问题:我感谢任何人解释这两种情况?
注意:父控件的DataContext(如窗口)是一个带有Notifiable属性的简单类 MyString :
感谢。
答案 0 :(得分:1)
似乎只要有双向绑定{Binding Path =。}是必需的。尝试将代码更改为:
constexpr uint8_t arr[HUGE_SIZE + 1] = "\x00\xFF\x...";
它工作正常。关于路径绑定的原始代码也有效。
这是一个相对主题: