このメンバーがWinformまたはWPFのいずれかでデータをバインドできるようにしたいのであれば、私はあなたがそれを宣言する必要があると信じています。プロパティ。私は、データバインディングにプロパティ(ゲッター/設定構文)が必要であると約95%の肯定的な立場です。私はこれを実証する小さなwpfソリューションを持っていますが、ここにそれを取り付ける方法はありません。
コードは次のとおりです。(VS 2008 SP1、target .net 3.5でビルド - 私はWPFプロジェクトを使用しました) WPFプロジェクト、メインウィンドウ(window1)、およびテスト対象のオブジェクト(DataObject)に2つの項目があります。 データオブジェクトのインスタンスの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;
}
}
}
[クラス内からアクセサープロパティを使用するか、クラスの外からアクセサープロパティを使用する必要がありますか?](http://stackoverflow.com/questions/476021/should-you-use-accessor-properties-from) -within-the-class-or-just-outside-o) – nawfal