2014-07-25 2 views
0

Я изучаю WPF и исследую DataBinding. Я хочу посмотреть, как указать DataBinding в XAML, а не в C#, но не могу понять, что я делаю неправильно в приведенном ниже примере.Не могу получить DataBinding в XAML для работы

(Я знаю, что есть много таких вопросов, как это уже, но я прошел через все их, но не могу получить какие-либо предложения для работы).

<Window x:Class="DataBinding2.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" 

    x:Name="theMainWindow" 
    xmlns:local="clr-namespace:DataBinding2" 
    > 

<StackPanel> 
     <WrapPanel Name="WrapPanel1" Orientation="Vertical" Margin="10" > 

      <!--// Tried this but get error: The type 'local:person2' was not found. --> 
      <WrapPanel.DataContext> 
       <local:person2 /> 
      </WrapPanel.DataContext> 

     <TextBlock Text="{Binding Path=FirstName}"/> 
    </WrapPanel> 

namespace DataBinding2 
{ 
    public partial class MainWindow : Window 
    { 
     public Person person2; 

     public MainWindow() 
     { 
      person2 = new Person() 
      { 
       FirstName = "Bob", 
      }; 

      InitializeComponent(); 

      // This works - but want to know what alternative is to do it in XAML 
      //WrapPanel1.DataContext = person2; 
     } 
    } 

    public class Person 
    { 
     public string FirstName { get; set; } 
     public int Age { get; set; } 
    } 
+0

Попробуйте обернуть ваш person2 в свойстве Person2 и ссылаться на него в XAML. WPF - это все свойства. –

ответ

2

Вы можете установить DataContext только, например, а не непосредственно в собственность в пределах некоторого экземпляра из XAML.

Для того, чтобы работать первый делают PERSON2 свойство поскольку связывание работает только со свойствами, по меньшей мере, например объекты:

public Person person2 { get; set; } 

, а затем вы можете установить DataContext в XAML как это:

<WrapPanel Name="WrapPanel1" Orientation="Vertical" Margin="10" 
      DataContext="{Binding person2, ElementName=theMainWindow}"> 
Смежные вопросы