2010-10-15 2 views
0

Когда я запускаю следующий код, текстовый блок не меняется.TextBlock Databinding

Моя догадка отсутствует в коде или XMAL.

XAML

<Window.Resources> 
     <ObjectDataProvider x:Key="PersonObj" ObjectType="{x:Type local:Person}" MethodName="GetFirstName" /> 
    </Window.Resources> 

    <Grid> 
     <!--<TextBlock Margin="26,7,12,0" Name="myTextBlock" Text="{Binding Path=FirstName}" Height="69" VerticalAlignment="Top" />--> 
     <TextBlock Margin="26,7,12,0" Name="myTextBlock" Text="{Binding FirstName, Source={StaticResource PersonObj}}" Height="69" VerticalAlignment="Top" /> 
    </Grid> 
</Window> 

КОД

namespace WpfApplication1 
{ 

    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
      test t = new test(); 
     } 
     public void testing() 
     { 
      test t = new test(); 
     }  
    } 

    public class Person 
    { 
     public String FirstName { get; set; } 
     public String LastName { get; set; } 

     public string GetFirstName() 
     { 
      return FirstName; 
     } 
    } 
} 

namespace WpfApplication1 
{ 
    class test : Person 
    { 
     public test() 
     { 
       this.FirstName = "John"; 
       this.LastName = "S"; 
       this.GetFirstName(); 
     } 

    } 
} 

Благодаря

ответ

2

изменения поставщика данных объекта:

<ObjectDataProvider x:Key="PersonObj" ObjectType="{x:Type local:test}" /> 
+0

Итак, вам нужно использовать ObjectType = "{x: Тип local: ClassName}". myTextBlock - это сообщение об ошибке. Как я могу использовать это в mutiple классе. Если исцеление произошло в тестовом классе, оно будет отображаться в основной форме, если в классе test1 будет происходить обход, он будет перекрывать его, если что-нибудь там. – juniorCSharp

+0

Я не уверен, что я следую @ _ @. но если я получу это правильно, тогда я думаю, что вы вызовете тест1 внутри своего тестового класса, не так ли? то вы можете просто переопределить значение в свойствах класса test class – dnr3