代码之家  ›  专栏  ›  技术社区  ›  Sonny Boy

WPF-如何在XAML中绑定泛型方法?

  •  0
  • Sonny Boy  · 技术社区  · 14 年前

    我有一个静态方法的类,它返回一个字典。方法签名如下: public static Dictionary<int, string> CodeLookup<T>() where T : EntityCodeBase

    目前,我正在使用此方法绑定到后面代码中的组合框,如下所示: this.cboState.ItemsSource = CodeCache.CodeLookup<StateCode>();

    有人能帮我指出在XAML中做这件事的正确方向,这样我就可以从我的代码背后删除这类东西吗?

    谢谢,
    桑尼

    3 回复  |  直到 14 年前
        1
  •  4
  •   xandy    14 年前

    不直接绑定到特定方法。您应该创建一个属性并将其绑定到该属性。

    public Dictionary<int, string> Code {
        get { return CodeCache.CodeLookup<StateCode>(); }
    }
    
        2
  •  0
  •   Daniel Perez    14 年前

    看来你不能用泛型方法

    more info

        3
  •  0
  •   SRM    14 年前

    以下是我的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模式了解更多信息。

    有很多方法可以绑定到静态方法,但是如果您所做的只是基本的数据绑定,那么这就有点过头了。如果你感兴趣的话,看看行动。