سؤال

لقد حددت stringCollection في إعدادات المشروع. أريد استخدام القيم في combobox.

هل هناك طريقة للوصول إليها 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 ، وأريد حقًا الحصول على المجموعة من الخاصية الافتراضية وليس عن طريق إنشاء إنشاء جديد.

هل هناك طرق أخرى لست على علم بها ، ربما يمكن لـ ObjectDataprovider الوصول إلى كائنات ثابتة؟

فكرت ، ربما يمكنني أن أجعل في App.xaml موردًا عالميًا يعيد mysettings.default وهو مثيل لفئة MySettings ، ثم الوصول إلى جميع خصائصه ، سأحاول ذلك ، لكنني أفضل الطريق السهل.

هل كانت مفيدة؟

المحلول

لقد فعلت ذلك دائمًا باستخدام 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/staticexextense

إذا كان لديك أي أفكار أفضل ، يرجى معرفة Lemme.

كملحق لإجابة جوزيف ، من الممكن أيضًا الوصول إلى الإعدادات الفردية مباشرة مع {x:Static } باستخدام فئة غلاف ثابت. يتيح هذا استخدام قيم الإعدادات التي لا يعمل فيها الربط - وأبرزها الرسوم المتحركة ، أو الخصائص التي لا تُعد خصائص التبعية.

النهج الأساسي هو:

public static class XamlSettings 
{
     public static MySettingsMember { get {return Properties.MySettings.Default.MySettingsMember; }}
}

التي تشير إليها بعد ذلك في XAML تحت مساحة الاسم ، فئة Wrapper موجودة على طول خطوط <DoubleAnimation From="{x:Static local:XamlSettings.MySettingsMember}" ... />.

كإضافة إلى هذا ، فإن محاولة فضح الافتراضي مباشرة لا تعمل ، على الأرجح لأنها ليست ثابتة تمامًا "بما يكفي" {x:Static} لا يحب. من المحتمل أن تكتب امتدادًا مخصصًا للعلامة المخصصة يحصل على خصائص مثيل ، على الرغم من ذلك.

هذا مفيد بشكل خاص لنهج قائم على الموارد في الرسوم المتحركة حيث لا تريد أن ترغب في ربطها بشكل صارم (وهو ما يجلب جميع أنواع المشكلات القابلة للتجميد) ، ولكن لا تريد أن يكون لديك الكثير من المفرد <sys:double x:Key="MyNumber">50.0</sys:double>يركل (أو أرغب في تجنب النفقات العامة لقاموس الموارد المدمج على مستوى التطبيق ، والتي قادت إلى الاعتقاد بأنها لم يتم إنشاء مثيل لها مرة واحدة عبر التطبيق).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top