2015-11-26 3 views
1

Я пытаюсь отобразить вывод метода в WPF TextBox. Я просто пытаюсь простую попытку напечатать одну строку 3 в TextBox.Связывание данных с выходом метода

Я пытаюсь сделать это следующим образом, используя ObjectDataProvider:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication1" 
     xmlns:system="clr-namespace:System;assembly=mscorlib" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 

     <ObjectDataProvider x:Key="dataprovider" ObjectType="{x:Type system:String}" MethodName="GetValue"> 

     </ObjectDataProvider> 
    </Window.Resources> 
    <Grid> 

     <TextBox Text="{Binding Source={StaticResource dataprovider}, Mode=OneWay}" HorizontalAlignment="Left" Height="23" Margin="201,168,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> 

    </Grid> 
</Window> 

И вот мой код позади:

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     public string GetValue() 
     { 
      return "3"; 
     } 
    } 
} 

Я не получаю никакого вывода. TextBox просто пуст. Где я иду не так?

ответ

3

Вместо ObjectDataProvider создать свойство как это:

public string GetMethod 
{ 
    get 
    { 
     return GetValue(); 
    } 
} 

И:

public MainWindow() 
{ 
    InitializeComponent(); 
    DataContext = this; 
} 

Затем в XAML удалить ObjectDataProvider и просто:

<TextBox Text="{Binding GetMethod, Mode=OneWay}" HorizontalAlignment="Left" 
     Height="23" Margin="201,168,0,0" TextWrapping="Wrap" 
     VerticalAlignment="Top" Width="120"/> 
Смежные вопросы