これは非常に単純な解決策のはずですが、インターネットで検索すると、バインディングを行う方法が複数あるようで、実際には機能していないようです。
ボタン、テキストボックス、リストボックスを備えた単純なアプリケーションを作成しました。ユーザーがテキスト ボックスにテキストを追加し、[追加] をクリックすると、そのテキストがリスト ボックスに表示されます。[追加] ボタンをクリックすると、名前がテキスト ボックス内のテキストで、姓が「Jones」の Person が作成されることに注意してください。これは、バインディングを実際に機能させる方法を理解するためのものです。私は ObservableCollection を持っていますが、クラス自体内のオブジェクトにリソースを配置する方法さえ理解できないようです。これは可能ですか?バインディングを持つために別のクラスを作成する必要がありますか?
ここに完全なXMALがあります
<UserControl x:Class="simpleBinding.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:z="clr-namespace:simpleBinding"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Canvas x:Name="LayoutRoot" Background="White">
<Button Name="_b" Content="Add" Height="23" HorizontalAlignment="Left" VerticalAlignment="Top" Width="58" Canvas.Left="90" Canvas.Top="5" Click="OnAdd" />
<TextBox Name="_tb" Canvas.Left="12" Canvas.Top="4" Height="24" Width="72"></TextBox>
<ListBox Name="_list" Canvas.Left="18" Canvas.Top="41" Height="98" Width="190" />
</Canvas>
ここに完全なコードビハインドがあります
namespace simpleBinding
{
public partial class MainPage : UserControl
{
public ObservableCollection<Person> PersonList = new ObservableCollection<Person> ();
public MainPage()
{
InitializeComponent();
}
private void OnAdd(object sender, RoutedEventArgs e)
{
PersonList.Add(new Person(_tb.Text, "Jones"));
}
}
public class Person
{
public string FirstName {private set; get;}
public string LastName {private set; get; }
public Person(string fName, string lName)
{
FirstName = fName;
LastName = lName;
}
}
}
助けてくれてありがとう、クリス