저는 UserControl에 텍스트 상자가 있습니다. 저는 UserControl에서 속성을 생성했습니다. 나는 텍스트 상자 속성을 usercontrol에서 생성 된 속성에 바인딩하려고합니다.입력란의 DataContext를 실버 라이트의 현재 클래스로 설정합니다.
문제는 내가 XAML의 현재 클래스에 datacontext를 구체화하는 방법을 모른다는 것입니다.
어떤 아이디어 ?? 덕분에
저는 UserControl에 텍스트 상자가 있습니다. 저는 UserControl에서 속성을 생성했습니다. 나는 텍스트 상자 속성을 usercontrol에서 생성 된 속성에 바인딩하려고합니다.입력란의 DataContext를 실버 라이트의 현재 클래스로 설정합니다.
문제는 내가 XAML의 현재 클래스에 datacontext를 구체화하는 방법을 모른다는 것입니다.
어떤 아이디어 ?? 덕분에
이것은 코드 숨김에있는 속성에 텍스트 상자에 입력 한 내용을 가져옵니다. 프로젝트의 크기에 따라 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;
}
}
내가 코드에서 바인딩을 만들 것입니다. 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
속성을 열어 둡니다.