Как связать один экземпляр объекта в WPF? - PullRequest
2 голосов
/ 26 февраля 2011

Я новичок в WPF и два дня безуспешно ищу.У меня есть окно WPF, которое имеет несколько элементов управления текстовым полем, и один объект с некоторыми свойствами.Этот объект передается в коде моего окна WPF в конструкторе:

public partial class SettingsDialog : Window
{
    public SettingsObject AppSettings
    {
        get;
        set;
    }

    public SettingsDialog(SettingsObject settings)
    {
        this.AppSettings = settings;
        InitializeComponent();
    }
}

SettingsObject выглядит примерно так (упрощено для ясности):

public class SettingsObject
{
    public string Setting1 { get; set; }
    public string Setting2 { get; set; }
    public string Setting3 { get; set; }

    public SettingsObject()
    {
        this.Setting1 = "ABC";
        this.Setting2 = "DEF";
        this.Setting3 = "GHI";
    }
}

И мой WPFокно (упрощенно):

<Window x:Class="MyProgram.SettingsDialog" 
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            DataContext="{Binding Source=AppSettings}">
    <Grid>
        <TextBox Name="Setting1Textbox" Text="{Binding Path=Setting1}"></TextBox>
        <TextBox Name="Setting2Textbox" Text="{Binding Path=Setting2}"></TextBox>
        <TextBox Name="Setting3Textbox" Text="{Binding Path=Setting3}"></TextBox>
    </Grid>
</Window>

Как добиться двустороннего связывания в этой ситуации?Я пробовал то, что вы видите выше (и многое другое), но ничего не работает!

1 Ответ

3 голосов
/ 26 февраля 2011

Вы установили свойство DataContext окна для своего экземпляра AppSettings?

public SettingsDialog(SettingsObject settings)
{

    InitializeComponent();

    //While this line should work above InitializeComponent,
    // it's a good idea to put your code afterwards.
    this.AppSettings = settings;

    //This hooks up the windows data source to your object.
    this.DataContext = settings;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...