c# - 将元素属性绑定到以下元素属性
问题描述
我需要有两个元素,其中一个具有绑定到另一个元素属性的属性。例如:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>
<Grid>
<TextBox x:Name="first" Text="Hello" Visibility="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=second}" />
<TextBox x:Name="second" Background="Transparent"/>
</Grid>
这里的想法是,当我开始输入第二个文本框时,第一个文本框将消失。这项工作很好,但我在输出窗口中收到此警告:
System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=Text.IsEmpty; DataItem=null; target element is 'TextBox' (Name='first'); target property is 'Visibility' (type 'Visibility')
这可能是因为第一个文本框试图绑定到第二个文本框的属性,但第二个文本框还不存在,因为它是在第一个文本框之后创建的。当然,一旦创建了第二个文本框,这就会得到正确解决,但我仍然想消除警告。
如果我颠倒文本框元素的顺序,警告就会消失,但现在我的第一个文本框在我的第二个文本框之上,所以我无法输入第二个文本框。我已经尝试通过设置 Z 索引来解决这个问题,但这不起作用(文本框上没有直接的 ZIndex 属性,只有 Panel.ZIndex?)
解决方案
该警告纯粹是一个表面问题。如果你愿意,你可以通过在绑定中提供一个 FallbackValue 来摆脱它:
Visibility="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=second, FallbackValue=Collapsed}
推荐阅读
- ruby - Ruby,带有数学计算的字符串
- amazon-web-services - 指向 ALB 的 AWS Route 53 公共记录的内部访问
- ruby - 如何使用 ESC/POS 发送彩色图像?
- r - 将值分隔到 R 中的现有列中
- electron - ElectronJS 未打包的重音字符无法识别(è、ü、é、ö、à、ä)
- flutter - Flutter>Hive:“Null”类型不是“bool”类型的子类型
- ios - 带有更新的依赖插件的 Ios Cordova 推送通知 fcm
- c++ - 如何使用命名空间中定义的运算符?
- spring - 查询结果在休眠上的ManyToMany关系上无限递归
- python - 我可以在 pythonanywhere 的上传网站中安装 Django Rest Framework 吗?