我有一个静态类,该类具有一个静态属性,需要设置按钮的可见性。
我正在尝试类似的事情:
<Button.Style>
<Style TargetType="Button">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=x:Static vg:GlobalResources.MyProperty, Path=IsAdmin}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
此外,在xaml的标题中,我包括名称空间:
xmlns:vg="clr-namespace:MyApplication.resources"
但是当属性IsAdmin为true时,该按钮不可见。
我尝试了其他类似的选择:
<DataTrigger Binding="{Binding ElementName=x:Static vg:GlobalResources, Path=MyProperty.IsAdmin}" Value="True">
但这不能解决问题。
那么,如何使用全局变量?
谢谢。
答案 0 :(得分:1)
使用Source
的{{1}}属性,即
Binding
重要提示:<DataTrigger Binding="{Binding Source={x:Static vg:GlobalResources.MyProperty}, Path=IsAdmin}" Value="True">
必须是依赖项属性,或者必须在更改后触发IsAdmin
。
从WPF 4.5开始,还存在用于绑定到静态属性的以下语法:
INotifyPropertyChanged.PropertyChanged
答案 1 :(得分:0)
您可以像绑定其他任何属性一样绑定静态对象,即只需将其设为静态,或执行以下操作:
Locale aLocale = new Locale.Builder().setLanguage("RU").setScript("Latn").setRegion("RS").build();
Geocoder geocoder = new Geocoder(this, aLocale);
List<Address> addressList = geocoder.getFromLocation(lat, lng, 1);
我怀疑这里的真正问题是您的静态对象不是属性,即它没有“获取”访问器。恐怕没有办法解决,至少看起来像这样:
<TextBlock Text="{x:Static vm:MyViewModel.MyStaticText}" />