关于在XAML中使用WP8绑定的问题。
在我的App.c中,我为类Setting声明了一个公共属性。在其他xaml页面中,我需要访问该属性并将该属性传递给ConverterParameter。我不能说我找到了干净利落的方式。以下是我目前如何实现这一目标的方法,但它只是感觉很脏。还有其他方法吗?
那么下面的代码会发生什么?在应用程序中,设置数据被加载。每次加载设置或设置更改时,都会删除/添加App.Current.Resource。然后,这允许我将数据绑定到它{StaticResource {resourceName}}
同样,这种方法100%有效......但有更好/另一种方法可以实现这一目标吗?
App.cs
private static Settings _settings = null;
public static Settings Settings
{
get { return _settings; }
private set { _settings = value; }
}
private async void Application_Launching(object sender, LaunchingEventArgs e)
{
if (Settings == null)
Settings = await FlightPath.Core.Data.LoadSettingsAsync();
App.Current.Resources.Add("Settings", App.Settings);
Settings.SettingsChanged += Settings_SettingsChanged;
}
private void Settings_SettingsChanged(object sender, EventArgs e)
{
if (App.Current.Resources["Settings"] == null)
App.Current.Resources.Add("Settings", App.Settings);
else
{
App.Current.Resources.Remove("Settings");
App.Current.Resources.Add("Settings", App.Settings);
}
}
应用程序页面XAML使用Converter / ConverterParameter
<TextBlock Text="{Binding observation_time,
Converter={StaticResource ZuluToLocalTimeConverter},
ConverterParameter={StaticResource Settings}}"
Style="{StaticResource PhoneTextNormalStyle}"
Margin="-4,0,0,0"/>
答案 0 :(得分:0)
如果您使用的是MVVM,则可以创建一个具有Singleton实例的SettingManager类。然后在ViewModelBase类中声明其属性。最后将它用于你的xaml代码
class ViewModelBaseClass: InotifyPropertyChanged
{
public SettingManager Settings{get{return SettingManager.Instance;}}
}
class SettingManager
{
public static Instance{get{...}}
public string this[string sName]
{
return "whatever you need";
}
}
class MYViewModel: ViewModelBase
{
}