2016-04-10 19 views
1

こんにちは私は2時間以上探していて、適切な解決策を見つけることができませんでした。 XAMLのApp.configの値をバインドする方法を教えてください(ではなく、C#の)。 XAMLのApp.configでのUWPバインディング

この

が背景とグリッドである、それはパスを持っていたが、私はここにApp.configファイル

<Grid x:Name="MainGrid"> 
    <Grid.Background> 
     <ImageBrush ImageSource="{Binding Source=}" Stretch="UniformToFill"/> 
    </Grid.Background> 

にバインドしたいと私にはわからないように、私のApp.configファイルである1正しい(私の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> 

私は{...}バインディングで記​​述する必要がありますか?その他の提案はありますか?

私はC#とUWPの新機能ですので、あなたの答えを考慮してください。助けてくれてありがとう。

答えて

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を含んでいます。

これで、ユーザーが選択した画像が得られました。グリッドを更新できます。あなたはMVVMパターンを使用している場合、あなたはImageBrushを公開するビューモデルのプロパティを更新するために、同様のコードを使用することができ、その後、結合し

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; 

:あなたのような何かを後ろのコードでこれを行うことができますプロパティへのグリッドの背景プロパティ。

<Grid Background="{Binding ImageBrushProperty}"> 
+0

ありがとうございます。しかし、静的な音は良くないですが、実行中に変更する方法はありますか?例えば、ユーザが別の画像を設定したい場合。 これが見つかりました:http://stackoverflow.com/questions/11149556/app-config-change-value App.config(ユーザー設定)の変更を保存したかった –

+0

あなたはアプリケーションに書き込むことができません.configを汎用アプリケーションから取得する代わりに、ApplicationDataクラスを使用する必要があります。いくつかのサンプルコードで答えを更新しました。 –

+0

編集ありがとうございました:) –

関連する問題