Como mover minha vinculação de dados bidirecional de Code-Behind para XAML
Relativamente novo no WFP e C # (programador PHP de longa data) ...
Eu configurei com êxito a ligação de dados 2-WAY entre uma TextBox e uma propriedade de um objeto. Consegui estabelecer a ligação no Code-Behind, mas não no XAML.
Gostaria de aprender como fazer a ligação no XAML. Ou seja, no exemplo abaixo, como mover a linhamyTestPanel.DataContext = CURRENT_NETWORK;
do Code-Behind ao XAML?
Eu olhei para tutoriais, exemplos, etc., mas nenhum ajudou ... Eles parecem querer que eu ligue o TextBox (ou objeto pai) a uma CLASS, não a um OBJECT. Alguns exemplos sugerem a ligação a uma classe com construtores adequados. Mas eu não quero fazer isso. Eu quero vincular a um objeto existente que pode ter existido por algum tempo. Eu posso fazer isso muito bem no Code-Behind ... Mas como fazer isso no XAML?
Aqui está o meu código por trás:
namespace net
{
public class network
{
public int ID { get; set; } // Property bound to TextBox
}
public partial class MainWindow : Window
{
network CURRENT_NETWORK = new network(); // My OBJECT (which could have been around for a while)
public MainWindow()
{
InitializeComponent();
CURRENT_NETWORK.ID = 123; // The object gets set up...
// ** Below is the line I want to learn how to move to XAML **
myTestPanel.DataContext = CURRENT_NETWORK; // <- CRITICAL LINE
}
}
}
e aqui está um trecho do XAML:
<Window x:Class="net.MainWindow"
// some lines omitted
xmlns:local="clr-namespace:net"
>
<DockPanel Name="myTestPanel" >
<TextBox Text="{Binding Path=ID, Mode=TwoWay}"></TextBox>
</DockPanel>
A ligação bidirecional funciona como um sonho :) Eu posso ver no TextBox o valor na propriedade ID do objeto e, inversamente, se eu editar o número no TextBox, o objeto será modificado corretamente. (Observei que com um botão exibindo uma caixa de mensagem, não mostrada no meu snippet de código.)
MAS como mover essa ligação crítica entre TextBox e EXISTING OBJECT (ou seja, a linhamyTestPanel.DataContext = CURRENT_NETWORK;
) do Code-Behind ao XAML?OBRIGADO!
PS: por que eu quero fazer a ligação no XAML? Parcialmenteapenas para aprender, e em parte porque acho que seria mais elegante / legível, já que o XAML já contém o nome da propriedade. Ou seja, eu gostaria de fazer todas as ligações no XAML em vez de algumas delas e outras no Code-Behind.