2013-01-17 43 views
0

在遵循WPF的MVVM架構,學習WPF DataBindings。我有一個在運行時實例化的對象的單個實例,窗口資源中的XAML代碼<p:MemoryPersistentStorageBridge x:Key="persistentMemoryBridge" />。我試圖從對象實例中獲取數據,並將其放到TextBox中作爲示例,但我沒有在該文本框中獲取任何文本。MVVM WPF DataBinding疑難解答

XAML:

<Window x:Class="UserConsole.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:p="clr-namespace:PollPublicDataStock;assembly=PollPublicDataStock" 
     xmlns:local="clr-namespace:UserConsole" 
     Title="MainWindow" Height="900" Width="800"> 

    <Window.Resources> 
     <p:MemoryPersistentStorageBridge x:Key="persistentMemoryBridge" /> 
    </Window.Resources> 


    <Grid Name="grid1" > 
     <!-- layout defintions --> 
     <TextBox DataContext="{StaticResource persistentMemoryBridge}" Text="{Binding Path=GetConnectionString}" Margin="0,327,31,491" Foreground="Black" Background="Yellow"/> 
    </Grid> 
</Window> 

代碼隱藏:

public class MemoryPersistentStorageBridge { 

    public MemoryPersistentStorageBridge() { 

    } 

    public string GetConnectionString() { 
     return "THISTEXTSHOULDAPPEARINTEXTBOXBUTSADLYDOESNOT"; 
    } 

} 
+0

快速查看'輸出'窗口中將顯示綁定錯誤(s)。 –

回答

3

您試圖綁定到的方法。你需要綁定到一個屬性。或者使用ObjectDataProvider

所以,你可以這樣做:

public class MemoryPersistentStorageBridge { 

    public MemoryPersistentStorageBridge() { 

    } 

    public string ConnectionString { 
     get { return GetConnectionString(); } 
    } 

    public string GetConnectionString() { 
     return "THISTEXTSHOULDAPPEARINTEXTBOXBUTSADLYDOESNOT"; 
    } 

} 

甚至:

public class MemoryPersistentStorageBridge { 

    public MemoryPersistentStorageBridge() { 

    } 

    public string ConnectionString { 
     get { return "THISTEXTSHOULDAPPEARINTEXTBOXBUTSADLYDOESNOT"; } 
    } 

} 

當然,在任何情況下,我們不處理更改屬性和通知改變的結合。

另一種選擇是使用ObjectDataProvider來包裝你的方法。這在我提供的鏈接中進行了說明。但是看起來像這樣:

<ObjectDataProvider ObjectInstance="{StaticResource persistentMemoryBridge}" 
        MethodName="GetConnectionString" x:Key="connectionString"> 
</ObjectDataProvider> 
+0

是的,這是正確的...我必須等待這個答案,但在此期間...對DataBinding是新手,對WPF來說是新手,那麼學習這些細節的最佳方法是什麼?我發現MSDN文件不清楚。 – sammarcow

+0

@sammarcow MSDN文檔非常好,有很多書。 http://msdn.microsoft.com/en-us/library/ms752347.aspx在描述的早期,它討論了綁定到屬性。 – kenny