myproject.mysettings.default.somesettingにアクセスする方法xaml?
-
30-09-2019 - |
質問
プロジェクト設定でStringCollectionを定義しました。コンボボックスの値を使用したいです。
Xamlyにアクセスする方法はありますか?
私は試した:
<CollectionViewSource Source="{x:Static src:MySettings.Default.MyCollection}" />
<CollectionViewSource
Source="{Binding Source={x:Static src:MySettings.Default.MyCollection}}" />
**** src **はプロジェクトのxmlnsです*
「タイプSRC:mysettings.defaultが見つかりませんでした」と書かれています。
問題は、MySettingsは、MySettingsのスレッドセーフインスタンスであるデフォルトのプロパティを提供するクラスであるということです。新しいONをインスタンス化することではなく、デフォルトプロパティからコレクションを取得したいということです。
私が知らない他の方法はありますか、多分objectDataproviderが静的オブジェクトにアクセスできるかもしれませんか?
MySettingsクラスのインスタンスであるDefaultを返すグローバルリソースをapp.xamlで作成できると思いました。その後、すべてのプロパティにアクセスできますが、私はそれを試してみますが、簡単な方法を好みます。
解決
私はいつもそれを使ってやっています X:静的マークアップ拡張. 。重要なのは、ソースをに設定することです Settings.Default
とのような目的の設定へのパス:
<Window x:Class="SettingsBindSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:SettingsBindSample.Properties"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<CollectionViewSource x:Key="MyItems"
Source="{Binding MyCollection, Source={x:Static s:MySettings.Default}}" />
</Window.Resources>
<StackPanel>
<ComboBox ItemsSource="{Binding Source={StaticResource MyItems}}" />
</StackPanel>
</Window>
他のヒント
私はこれを見つけました。チェックアウトして、私が自分の時間を無駄にしていないことを願っています...
http://code.msdn.microsoft.com/staticexextension
より良いアイデアがある場合は、Lemmeを知ってください。
ジョセフの答えの延長として、個々の設定に直接アクセスすることも可能です {x:Static }
静的ラッパークラスを使用します。これにより、バインディングが機能しない設定値(最も顕著なアニメーション、または依存関係のプロパティではないプロパティ)を使用できます。
基本的なアプローチは次のとおりです。
public static class XamlSettings
{
public static MySettingsMember { get {return Properties.MySettings.Default.MySettingsMember; }}
}
次に、ラッパークラスがラインに沿っている名前空間の下のXAMLで参照してください <DoubleAnimation From="{x:Static local:XamlSettings.MySettingsMember}" ... />
.
これへの補遺として、デフォルトを直接公開しようとすると、おそらくそれが完全に静的な「十分な」ではないため、デフォルトのプロパティはインスタンスプロパティであり、これはインスタンスプロパティです。 {x:Static}
好きではありません。ただし、おそらくインスタンスプロパティを取得するカスタムマークアップ拡張機能を記述できます。
これは、あなたが厳密に言えばバインドしたくないアニメーションへのリソースベースのアプローチ(あらゆる種類のフリーズ可能な問題を活用します)に特に役立ちますが、シングルトンをたくさん持ちたくありません <sys:double x:Key="MyNumber">50.0</sys:double>
Sキック(または、マージされたアプリレベルのリソース辞書のオーバーヘッドを避けたい)。私は、アプリ全体に一度インスタンス化されていないと信じていると信じています)。