我有一个TextBlock,为了显示我使用的翻译文本
x:Uid="/FileResourceName/txtControldName" Name="txtControlName"
(在我写的资源文件中:txtControldName.Text =“ some text”)它工作正常。但是我想根据代码隐藏对象来隐藏或显示它,为此我使用
Visibility="{Binding Path = IsMyControlVisible}"
(在这种情况下,对于文本,我必须直接在控件中分配一些文本,例如Text =“ some text”)。如果我使用这两个属性之一,则一切正常,但同时这两个属性不起作用。有什么办法可以做同样的事情?
答案 0 :(得分:1)
如果我使用这两个属性之一,则一切正常,但同时这两个属性不起作用。有什么办法可以做同样的事情?
这不是正常现象。绑定到Visibility
属性和在资源文件中设置文本之间没有冲突。您是否为绑定设置了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。