【发布时间】:2023-03-06 12:51:01
【问题描述】:
我有一个带有TextBox 的 UWP 应用 (C#)。文本框绑定到一个属性,有两种方式:
Text="{Binding NameFilterString, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
当我输入TextBox 时,“删除按钮”——右上角的小x——出现了。点击它会按预期清除TextBox 的文本和属性值。
当属性更改时,TextBox's 文本会正确更新,但不会出现删除按钮。我可以以某种方式使其可见吗?是通过属性还是通过某种方式“刷新”它?
【问题讨论】:
-
其可见性通过样式模板的 VSM 中的ButtonVisible 状态进行控制。您可以使用
VisualStateManager.GoToState方法,或者您可以直接编辑模板以使其始终可见。或模板绑定该属性并以这种方式切换它。希望我有时间整理一个例子,但没有,所以留下评论。 -
好的,我现在看到这是一个焦点问题,而不是绑定问题。当文本框有焦点时 x 是可见的,在我正在寻找 x 的场景中,TextBox 不再有焦点......我仍然喜欢一个如何始终显示它的示例,或者如何自己控制可见性。
-
哦,那真的很容易。如果您查看默认模板,看看他们如何在
DeleteButton上明确设置Visibility="Collapsed"?所以你可以删除那个和 VisualState 。或模板绑定它(我通常会使用Tag属性,因为它用于那种事情,然后您不必创建依赖属性)。十分简单。或者您也可以发挥创造力,自己使用this 之类的方式来实现。 -
对不起,我对 XAML 和模板不太熟悉,我真的可以举个例子。谢谢!
-
好的,我今天确实有一点时间。您只想知道去哪里/如何去删除明确设置的可见性=折叠?或者如何模板绑定该属性以从实例级别命中它?还是别的什么?
标签: c# xaml windows-10 uwp