답변

3

이것은 코드 숨김에있는 속성에 텍스트 상자에 입력 한 내용을 가져옵니다. 프로젝트의 크기에 따라 MVVM을 ViewModel에 코드를 푸시 한 다음 UserControl에서 this.DataContext = ViewModel의 인스턴스를 지정하는 것이 좋습니다.

XAML : 뒤에

<UserControl x:Class="SilverlightApplication1.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" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

    <StackPanel> 

     <TextBox Text="{Binding Foo,Mode=TwoWay}"/> 

     <Button Content="Click" Click="Button_Click"/> 

    </StackPanel> 

</UserControl> 

코드 :

public partial class MainPage : UserControl 
{ 
    public string Foo { get; set; } 

    public MainPage() 
    { 
     InitializeComponent(); 
     this.DataContext = this; 
    } 
} 
1

내가 코드에서 바인딩을 만들 것입니다. TextBox에 x:Name="MyTextBox"이 있다고 가정하면 사용자 정의 컨트롤에서 MyText이라는 종속성 속성 (또는 INotifyPropertyChanged 구현의 표준 속성)을 추가했다고 가정합니다.

public partial class MainPage : UserControl 
    { 
    public MainPage() 
    { 
    InitializeComponent(); 
    Binding binding = new Binding("MyText"); 
    binding.Mode = BindingMode.TwoWay; 
    binding.Source = this; 
    MyText.SetBinding(TextBox.TextProperty, binding); 
    } 
} 

이렇게하면 더 일반적인 용도로 UserControl의 DataContext 속성을 열어 둡니다.

관련 문제