WPF에서 새로운 기능이며 사용자 콘트롤에서 mainwindow에 위치한 텍스트 박스를 바인딩하려고합니다.WPF 사용자 콘트롤의 메인 윈도우에서 텍스트 상자 바인딩하기
<Window x:Class="Databinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="360" Width="490">
<Grid HorizontalAlignment="Left" Width="480">
<TextBox x:Name="EventTitle" HorizontalAlignment="Left" Height="23" Margin="40,19,0,0" TextWrapping="Wrap" Text="{Binding Path=FirstName}" VerticalAlignment="Top" Width="120"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="195,20,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
<StackPanel x:Name="Stck_Main" HorizontalAlignment="Left" Height="230" Margin="22,75,0,0" VerticalAlignment="Top" Width="439"/>
<Button Content="UC" HorizontalAlignment="Left" Margin="371,20,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
</Grid>
또한 값 업데이 트를
class UIcontrol : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _firstName;
protected void Notify(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public string FirstName
{
get { return _firstName; }
set
{
if (value != _firstName)
{
_firstName = value;
Notify("FirstName");
}
}
}
}
내 질문을 관리하는 클래스를 생성 : 메인 창 내부 나는 간단한 사용자 컨트롤을 사용했다. 이 사용자 정의 컨트롤에서 텍스트 상자 값을 바인딩하고 싶습니다. 바인딩은 메인 윈도우의 버튼에서 작동하지만 사용자 정의 컨트롤에서 아무런 변화가 없습니다. 나는 datacontextis가 어딘가에 잘못한 것 같지만, 올바른 방법을 찾도록 도와주세요. MainWindow를 뒤에
코드는
public partial class MainWindow : Window
{
private UIcontrol viewModel;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
viewModel = new UIcontrol();
DataContext = viewModel;
viewModel.FirstName = "Mike";
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
UC1 myUC = new UC1();
Stck_Main.Children.Clear();
Stck_Main.Children.Add(myUC);
}
}
사용자 제어 코드 뒤에
public partial class UC1 : UserControl
{
private UIcontrol viewModel;
public UC1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
viewModel = new UIcontrol();
DataContext = viewModel;
viewModel.FirstName = "Doe";
}
}
이며 XAML의 :
UserControl x:Class="Databinding.UC1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Margin="0,0,10,43">
<Canvas Height="194" Margin="25,30,71,0" VerticalAlignment="Top" Background="White">
<Button Content="Button" Canvas.Left="100" Canvas.Top="81" Width="75" Click="Button_Click" />
</Canvas>
</Grid>
당신의 XAML 공유 시겠어요 UC1? –
UC1 xaml herunder – GcH
당신은'Doe'가 아니라'Mike'를보고 있습니다. 옳은? –