2010-07-16 1 views
2

Кажется, что это должно быть просто ...
У меня есть пользовательское управление, которое я собираюсь использовать на нескольких вкладках элемента управления вкладкой. Я хочу, чтобы все экземпляры пользовательского контроля синхронизировались.simple silverlight databinding listbox to List <>

В моей UserControl У меня есть список строк:

public static List<string> fonts = new List<string>() { "Arial", "Courier" }; 

И в ListBox:

<ListBox x:Name="fontList" ItemsSource="{Binding Path=fonts}" /> 

Однако ListBox никогда не заполняется.
В поисках кода примера, похоже, я видел эту реализацию в нескольких образцах, но я не могу заставить ее работать.
Спасибо за любые подсказки ...

Обновлено с предложениями AWJ, но до сих пор не работает:
MainPage.xaml.cs:

public partial class MainPage : UserControl 
{ 
    public static List<string> _fonts 
     = new List<string>() { "Arial", "Courier" }; 

    public List<string> Fonts { get { return _fonts; } } 
} 

В TestGroup.xaml:

<ListBox x:Name="fontList1" ItemsSource="{Binding Parent.Fonts, ElementName=LayoutRoot}" Margin="3" /> 

ответ

4
  • В первую очередь вы можете привязываться только к свойствам, а не к полям.
  • Вторым свойство должно быть экземпляром объекта для поддержки привязки
  • В-третьих, если вы не создадите свой собственный DataContext UserControl, вам понадобится более сложная привязка.

В коде вам потребуется: -

public static List<string> fonts = new List<string>() { "Arial", "Courier" }; 
public List<string> Fonts {get { return fonts; } } 

и в XAML: -

<ListBox x:Name="fontlist" ItemsSource="{Binding Parent.Fonts, ElementName=LayoutRoot}" />