Ако искате този член да може да се обвързва с данни или от Winform, или от WPF, смятам, че трябва да го декларирате като свойство. Около 95 процента съм сигурен, че обвързването на данни изисква свойство (синтаксис за получаване/настройка). Имам малко wpf решение, което демонстрира това, но не виждам начин да го прикача тук.
Ето кода: (създаден с VS 2008 SP1, насочен към .net 3.5 - използвах WPF проект). Има 2 елемента в проекта WPF, основният прозорец (window1) и обектът, който тестваме (DataObject). Има етикет на прозореца, който е свързан с данни към свойството Name в екземпляр на обект с данни. Ако преобразувате свойството Name в поле (премахнете getter/setter), обвързването на данни ще спре да работи.
Window1.xaml:
<Window x:Class="WpfDatabinding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Label Name ="Label1" Height="28" Margin="12,24,37,0" VerticalAlignment="Top" Content="{Binding Name}"></Label>
</Grid>
Window1.xaml.cs
using System;
using System.Windows;
namespace WpfDatabinding
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private DataObject ADataObject;
public Window1()
{
InitializeComponent();
this.ADataObject = new DataObject();
this.ADataObject.Name = "Hello!";
this.DataContext = this.ADataObject;
}
}
}
namespace WpfDatabinding
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private DataObject ADataObject;
public Window1()
{
InitializeComponent();
this.ADataObject = new DataObject();
this.ADataObject.Name = "Hello!";
this.DataContext = this.ADataObject;
}
}
}
DataObject.cs:
namespace WpfDatabinding
{
public class DataObject
{
// convert this to a field, and databinding will stop working
public string Name
{
get;
set;
}
}
}
person
JMarsch
schedule
25.02.2009