binding - TextBlock 与两个源绑定
问题描述
我有一个 TextBlock 并显示我使用的翻译文本
x:Uid="/FileResourceName/txtControldName" Name="txtControlName"
(在我写的资源文件中:txtControldName.Text =“some text”)它工作正常。但我想隐藏或显示它取决于代码隐藏对象,为此我使用
Visibility="{Binding Path = IsMyControlVisible}"
(在这种情况下,对于文本,我必须直接在控件中分配一些文本,例如 Text="some text")。如果我使用这两个属性之一,一切正常,但同时这两个属性不起作用。有没有办法做同样的事情?
解决方案
如果我使用这两个属性之一,一切正常,但同时这两个属性不起作用。有没有办法做同样的事情?
这不是正常的行为。Visibility
绑定到属性和在资源文件中设置文本之间没有冲突。您是否为 Binding 设置了 DataContext?
请参阅以下代码示例,它运行良好。
<Grid>
<TextBlock x:Uid="txtControldName" Visibility="{Binding IsMyControlVisible}"></TextBlock>
<Button Content="test" Click="Button_Click"></Button>
</Grid>
public sealed partial class MainPage : Page,INotifyPropertyChanged
{
private Visibility _IsMyControlVisible;
public Visibility IsMyControlVisible
{
get { return _IsMyControlVisible; }
set
{
_IsMyControlVisible = value;
RaisePropertyChange("IsMyControlVisible");
}
}
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChange(String PropertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this,new PropertyChangedEventArgs(PropertyName));
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
IsMyControlVisible = IsMyControlVisible == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed;
}
}
请注意,您需要实现INotifyPropertyChanged
接口,当属性值发生变化时,它会通知 UI。
推荐阅读
- javascript - 如何处理“未找到产品”。与赛普拉斯?
- mysql - 获取最近的记录,按 2 个日期汇总?
- c# - 注册类,将其从 android 项目传递给 App 类
- macos - 命令行工具已经安装,使用“软件更新”安装更新?
- javascript - 如何在 React 中使用 forwardRef()?
- node.js - JSON 格式的 API 到 Postgres 表
- spring-boot - 如何在 Spring-Boot 中调试自定义异常消息
- r - 在 R 中,希望从某些行中删除重复项,并在其他行中合并行
- django - 如何将第二个(不同的)模型实例发送到模板
- python - 如何在 PySpark 函数中引用定义的常量?