Свойства объекта привязки данных WPF к текстовому полю по имени объекта? - PullRequest
0 голосов
/ 20 апреля 2019

Добрый вечер,

У меня есть простая проблема:

Я знаю, что могу связывать объекты в контексте данных следующим образом:

//Class CustomObject with a Property named "Property" with value "obj1"
CustomObject obj1 = new CustomObject("obj1");
DataContext = obj1;
<TextBox Text="{Binding Property}" 

Это работает.Но что, когда у меня больше одного объекта в классе?Я пробовал что-то вроде этого:

<TextBox Text="{Binding obj1.Property}" 

К сожалению, это не работает.Кто-нибудь знает, как я могу связать по имени объекта?

Спасибо.

Редактировать: В C # работает с этим кодом:

CustomObject obj1 = new CustomObject("Test");
Binding myBinding = new Binding();
myBinding.Path = new PropertyPath("Property");
myBinding.Source = obj1;
textBox1.SetBinding(TextBox.TextProperty, myBinding);

Поэтому я попробовал то же самое в XAMLК сожалению, не удачно:

 <TextBox Text="{Binding Property, Source=Obj1}"/>

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Вы должны создать класс модели представления, который содержит экземпляр CustomObject как один из его свойств.

public class MyViewModel
{
    public CustomObject Obj1 { get; set } 
    // declare other properties ...
}

Затем назначить экземпляр модели представления для DataContext окна

var obj1 = new CustomObject("obj1");
var vm = new MyViewModel
{
    Obj1 = obj1
    // assign other properties ...
};
DataContext = vm;

Теперь привяжите это так:

<TextBox Text="{Binding Obj1.Property}" />
0 голосов
/ 20 апреля 2019

Попробуйте:

<TextBox DataContext="{Binding Path=Obj1, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" Text="{Binding Property}"/>

В этом примере Obj1 будет свойством любого окна, в котором вы работаете, программируя.Obj2 также будет свойством, если вы планируете связать его с другим текстовым полем в том же окне и т. Д. ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...