簡體   English   中英

MVVM WPF DataBinding故障排除

[英]MVVM WPF DataBinding troubleshooting

在遵循WPF的MVVM體系結構之后,學習WPF DataBindings。 我在Windows資源中使用XAML代碼<p:MemoryPersistentStorageBridge x:Key="persistentMemoryBridge" />在運行時實例化了一個對象的實例。 我試圖從對象實例中獲取數據,並將其放入一個TextBox中作為示例,但在該文本框中沒有任何文本。

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";
    }

}

您正在嘗試綁定一個方法。 您需要綁定到屬性。 否則使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM