실제로보기 모델에 속성을 넣고 XAML 바인딩을 사용하려고하지만 다른 이야기입니다.
예제를 설명 할 때 먼저 "FirstName"속성을 간단한 가져 오기/설정이 아닌 종속 속성으로 구현해야합니다. Here is a great code-snippet from Shawn Wildermuth 많은 타이핑을 저장해야합니다 ("$ type $) args. NewValue"... NewValue가 스 니펫에 대소 문자를 잘못 입력했습니다.) 수정해야하는 스 니펫에 오타가 하나 있습니다.
XAML에서 간단한 가져 오기/설정 속성에 바인딩 할 수 있지만 단방향/한 번 바인딩이므로 변경 내용으로 업데이트되지 않습니다.
코드에서 바인딩에는 두 가지 설정이 필요합니다.
- 컨트롤에 데이터 바인딩을 설정 제어 (또는 페이지) 및
- 의 DataContext에 설정. 당신은 당신이 같은 코드를 사용할 수 있습니다 언급 예를 들어
합니다 (XAML에서합니다 MyTextBox라는 TextBox 컨트롤 가정합니다) 다음
혼합 4에서
using System.Windows;
using System.Windows.Controls;
namespace BindingCodeTest
{
public partial class BindingCode : UserControl
{
public string FirstName
{
get { return (string)GetValue(FirstNameProperty); }
set { SetValue(FirstNameProperty, value); }
}
// Using a DependencyProperty as the backing store for FirstName.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName",
typeof(string),
typeof(BindingCode),
new PropertyMetadata(string.Empty,
new PropertyChangedCallback(OnFirstNameChanged)));
static void OnFirstNameChanged(object sender, DependencyPropertyChangedEventArgs args)
{
// Get reference to self
BindingCode source = (BindingCode)sender;
// Add Handling Code
string newValue = (string)args.NewValue;
}
public BindingCode()
{
InitializeComponent();
myTextBox.DataContext = this;
myTextBox.SetBinding(TextBox.TextProperty, new System.Windows.Data.Binding("FirstName"));
FirstName = "First name"; // Sample change
}
}
}
내가 올바르게 새로운 질문을 이해한다면, 당신은 코드 숨김에만 혼합 인터페이스를 사용하는 속성에 바인딩 할? 페이지에 대한 datacontext를 먼저 설정하지 않으면 나는 할 수 있다고 생각하지 않습니다. –
+1, 투표 실패 이유를 모르겠다. 엄격하게 프로그래밍하지는 않지만 여전히 관련이 있습니다. – DMan
@HiTech Magic - 유일한 코드가 datacontext를 설정하는 것에 신경 쓰지 않습니다. – Erez