0

WPF の MVVM アーキテクチャに従い、WPF DataBinding を学習します。<p:MemoryPersistentStorageBridge x:Key="persistentMemoryBridge" />ウィンドウ リソース内の XAML コードを使用して、実行時にインスタンス化されたオブジェクトの単一のインスタンスがあります。オブジェクト インスタンスからデータを取得して、例として 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";
    }

}
4

1 に答える 1

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

}

もちろん、どちらの場合も、プロパティの変更を処理したり、バインディングに変更を通知したりすることはありません。

もう 1 つのオプションは、ObjectDataProvider を使用してメソッドをラップすることです。これは、私が提供したリンクに示されています。しかし、次のようになります。

<ObjectDataProvider ObjectInstance="{StaticResource persistentMemoryBridge}"
                  MethodName="GetConnectionString" x:Key="connectionString">
</ObjectDataProvider>
于 2013-01-17T19:58:10.780 に答える