Символ - это указатель на переменную или функцию.
Например, плагин, определенный как
blockquote>package main import "fmt" func F() { fmt.Printf("Hello, number %d\n", V) }
, может быть загружен с помощью функции Open, а затем могут быть доступны экспортированные символы пакета V и F
blockquote>p, err := plugin.Open("plugin_name.so") if err != nil { panic(err) } f, err := p.Lookup("F") if err != nil { panic(err) } f.(func())() // prints "Hello, number 7"
«F» - это просто строка, так что вы все равно можете изменить ее значение во время выполнения.
Можно просто установить DataTemplate, и WPF делает всю работу. Установите ItemsSource на список Bar
объекты, и затем определяют DataTemplate для Bar
объекты.
<ListBox ItemsSource="{Binding Path=Foo.Bars}">
<ListBox.Resources>
<DataTemplate DataType="{x:Type Bar}">
<Label Content="hello stackoverflow" />
</DataTemplate>
</ListBox.Resources>
</ListBox>
Вы могли также установить ItemsTemplate непосредственно при помощи <ListBox.ItemTemplate>
вместо <ListBox.Resources>
См. обзор привязки данных в MSDN.
Сначала добавьте свое пространство имен к Window
элемент (Intellisense):
xmlns:local="clr-namespace:yourenamespace"
Затем следующее XAML
(в Window.Resources
очевидный способ должен сделать это):
<Window.Resources>
<ObjectDataProvider x:Key="DataProvider" ObjectType="{x:Type local:Foo}"/>
<DataTemplate x:Key="Template" >
<TextBlock Text="{Binding Bar}"/>
</DataTemplate>
</Window.Resources>
Поместите Listbox
:
<ListBox DataContext="{Binding Source={StaticResource DataProvider}}" ItemsSource="{Binding Bars}" ItemTemplate="DynamicResource Template" />
Но, это зависит от Вашего кода - позади объекта, необходимо установить конструктора для инициализации общественных собственностей в объекте, которые являются ObservableCollection <> предпочтительно (Существуют некоторые правила ограничения с экземпляром объекта в XAML
).