你好我一直在寻找超过2个小时,但找不到合适的解决方案。我需要帮助如何从XAML中的App.config绑定一个值(不是在C#中)。
这是一个带背景的网格,它有一个路径,但我想将它绑定到App.config
<Grid x:Name="MainGrid">
<Grid.Background>
<ImageBrush ImageSource="{Binding Source=}" Stretch="UniformToFill"/>
</Grid.Background>
这是我的App.config,因为我不知道哪一个是正确的(在我的wpf书中使用了applicationSettings)我发布了两个:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="bg_sun_key" value="../Assets/sun.png"/>
</appSettings>
<applicationSettings>
<MyAppName.Properties.Settings>
<setting name="bg_sun" serializeAs="String">
<value>../Assets/sun.png</value>
</setting>
<setting name="bg_planet" serializeAs="String">
<value>../Assets/planet.png</value>
</setting>
</MyAppName.Properties.Settings>
</applicationSettings>
</configuration>
我必须在{Binding ...}写些什么?还有其他建议吗?
我是C#和UWP的新手,所以请考虑一下你的答案。谢谢你的帮助。
答案 0 :(得分:2)
我认为你可能想要使用应用程序资源,而不是使用app.config。在App.xaml文件中,添加以下内容:
<Application.Resources>
<ImageBrush x:Key="bg_sun_key" ImageSource="/Assets/sun.png"/>
</Application.Resources>
然后,您可以使用网格中的资源:
<Grid Background="{StaticResource bg_sun_key}">
</Grid>
更新了有关存储到应用程序设置的信息的答案:
与传统的Win32桌面应用程序不同,您无法在运行时从通用应用程序将设置保存到App.Config文件。这是因为安装文件夹是只读的。而是使用ApplicationData类。使用此代码存储设置:
var settings = ApplicationData.Current.LocalSettings.Values;
settings["ChosenImage"] = “planet.png”
此代码用于检索设置:
var chosenImage = “sun.png”; // set a default
var settings = ApplicationData.Current.LocalSettings.Values;
if (settings.ContainsKey("ChosenImage”))
{
chosenImage = settings["ChosenImage"] as string;
}
ApplicationData还包括RoamingSettings,如果您希望用户选择漫游到不同的设备。
现在,您拥有用户选择的图像,您可以更新网格。您可以在后面的代码中执行此操作,例如:
var imageSource = new BitmapImage(new Uri("ms-appx:///Assets/" + chosenImage, UriKind.Absolute));
var imageBrush = new ImageBrush();
imageBrush.ImageSource = imageSource;
imageBrush.Stretch = Stretch.UniformToFill;
this.mainGrid.Background = imageBrush;
如果您正在使用MVVM模式,则可以使用类似的代码更新公开ImageBrush的视图模型上的属性,然后将网格的背景属性绑定到属性。
<Grid Background="{Binding ImageBrushProperty}">