2010-09-09 90 views
1

做了一個非常簡單的例子列表界面性能,希望有人能遵循這一點,並幫助我Expression Blend的綁定列表不綁定

這裏是我的代碼。

視圖模型

public class ViewModel 
{ 
    private Person _noninterfacePerson; 
    private IPerson _interfacePerson; 

    public ViewModel() 
    { 
     _noninterfacePerson = new Person(); 
     _interfacePerson = new Person(); 
    } 

    public Person NonInterfacePerson 
    { 
     get { return _noninterfacePerson; } 
    } 

    public IPerson InterfacePerson 
    { 
     get { return InterfacePerson; } 
    } 

} 

public class Person : IPerson 
{ 
    public Person() 
    { 

    } 

    public string Name 
    { 
     get; 
     set; 
    } 

    public int age 
    { 
     get; 
     set; 
    } 

} 

IPerson

public interface IPerson 
{ 
    int age { get; set; } 
    string Name { get; set; } 
} 

查看

<Window x:Class="WpfApplication2.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication2" 
     mc:Ignorable="d" 
Title="MainWindow" Height="350" Width="525"> 
<Grid d:DataContext="{d:DesignInstance local:ViewModel}"> 

</Grid> 
</Window> 

在Expression Blend中,如果插入文本塊,請單擊「高級選項」 - >數據綁定... - >數據上下文我將InterfacePerson和NonInterfacePerson視爲綁定到的選項。但是,NonInterfacePerson有一個小箭頭顯示我可以綁定到的其他屬性。年齡和名字在這種情況下。

當我將d:DataContext設置爲d:DesignData Source時,會發生同樣的情況。我沒有用這個例子,因爲它比較複雜。但那是我真正想要這個工作的地方,因爲那時我可以看到我所有的綁定選項並且有樣本數據。

如果我不是做這在我的觀點:

<Window x:Class="WpfApplication2.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication2" 
     mc:Ignorable="d" 
Title="MainWindow" Height="350" Width="525"> 
<Window.Resources> 
<local:ViewModel x:Key="DummyVM"/> 
</Window.Resources> 
<Grid d:DataContext="{Binding Source={StaticResource DummyVM}}"> 

</Grid> 
</Window> 

那麼我可以看到InterfacePerson的性質,但是,我仍然無法得到輕鬆實現樣本的數據,我想用d:DesignData。

應該指出的是,在所有情況下,如果我手動輸入路徑工作正常。這純粹是讓Blend顯示它們的問題,因此設置綁定更容易。

感謝您提供的任何幫助!

回答

1

我很確定他們使用反射來識別對象的屬性,而接口只是佈局的描述,而不是真實的對象,所以沒有反射的屬性。

希望這會有所幫助。