سؤال

وأنا أحاول أن DataBind عناصر إلى مربع القائمة كما يلي:

<ListBox x:Name="MyListBox" Margin="0,0,0,65">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource MyConverter}}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

والسبب أنا ملزم لالكائن بأكمله وليس خاصية لأن بلدي تحويل سوف تحتاج خصائص متعددة للجسم لبناء السلسلة التي تقوم بإرجاع.

وهذا يعمل ويتم إرجاع سلسلة بلدي. ولكن بعد ذلك عندما أقوم بتغيير ObservableCollection أن هذا يعتمد على قيمة لا تغيير على الشاشة. إذا كنت ربط مجرد خاصية واحدة وتغييره، ثم قيمة يفعل التغيير.

وماذا يمكنني أن أفعل بشكل مختلف؟ لا أستطيع ربط خاصية واحدة منذ أن كنت في حاجة الكائن بأكمله في تحويل ... ويتم بالفعل استخدام ConverterParameter.

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

المحلول

وتذكر، إذا قمت بربط إلى خاصية "الرئيسية" وقيمة الخاصية الرئيسية نفسها لا تتغير، الربط لن يكون هناك سبب لتجديد نشاطه. انه ليس لديها دليل على أن تحويل الخاص بك يستند فعلا الخروج من خاصية الفرعية. ما يمكنك القيام به هو استخدام MultiBinding حيث يمكنك ربط ليس فقط الممتلكات "الرئيسية"، ولكن أيضا خاصية فرعية محددة. وهذا يعطي IMultiValueConverter الوصول إلى التنفيذ كائن البيانات الرئيسي، ولكن لأنك ملزم أيضا إلى الخاصية الفرعية التي يتغير، كما سيتم تحديثها عندما تتغير قيمة الفرعية المنشأة.

نصائح أخرى

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