繁体   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