WPF - Как связать универсальный метод в XAML? - PullRequest
0 голосов
/ 24 ноября 2010

У меня есть класс со статическим методом, который возвращает словарь. Суть метода заключается в следующем: public static Dictionary<int, string> CodeLookup<T>() where T : EntityCodeBase

В настоящее время я использую этот метод для привязки к своим спискам в коде, например так: this.cboState.ItemsSource = CodeCache.CodeLookup<StateCode>();

Может ли кто-нибудь указать мне правильное направление для выполнения этого в XAML, чтобы я мог удалить подобные вещи из моего кода?

Спасибо,
Sonny

Ответы [ 3 ]

4 голосов
/ 24 ноября 2010

Не привязывается напрямую к определенному методу.Вы должны создать свойство и привязать его к нему.

public Dictionary<int, string> Code {
    get { return CodeCache.CodeLookup<StateCode>(); }
}
0 голосов
/ 24 ноября 2010

Вот свойство в моей viewModel:

    public ObservableCollection<Contact> AllContacts
    {
        get { return _applicationViewModel.CurrentContacts; }
    }

А вот мой XAML:

<ListView Margin="5" ItemsSource="{Binding Path=AllContacts}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=LastName}" />
                <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}" />
                <GridViewColumn Header="Work Phone" DisplayMemberBinding="{Binding Path=OfficePhone, Converter={StaticResource phoneConverter}}" />
                <GridViewColumn Header="Cell Phone" DisplayMemberBinding="{Binding Path=CellPhone, Converter={StaticResource phoneConverter}}" />
                <GridViewColumn Header="Email Address" DisplayMemberBinding="{Binding Path=PrimaryEmail}" />
            </GridView>
        </ListView.View>
    </ListView>

Просто установите DataContext на ViewModel, и вы получите все, что вам нужно.Ознакомьтесь с шаблоном MVVM для получения дополнительной информации.

Существуют способы привязки к статическому методу, но если все, что вы делаете, это базовое связывание данных, то это немного излишне.Посмотрите на действия, если вы заинтересованы.

0 голосов
/ 24 ноября 2010

похоже, что вы не можете сделать это для общих методов

подробнее

...