메인 winodw에 상태 표시 줄 컨트롤이 있습니다. 나는 메인 윈도우에 배치 된 사용자 컨트롤을 가지고있다. 나의 사용자는 버튼을 가지고있다.wpf에서 사용자 정의 컨트롤에서 주 컨트롤로 데이터를 전달하는 방법
내가 사용자 정의 컨트롤에서 단추를 클릭하면 주 창 상태 표시 줄을 업데이트해야한다고 말합니다.
MVVM 패턴을 따르고 있습니다. 나는 이것을 어떻게 얻는 지 잘 모릅니다. 나는 wpf에서 초보자입니다.
메인 winodw에 상태 표시 줄 컨트롤이 있습니다. 나는 메인 윈도우에 배치 된 사용자 컨트롤을 가지고있다. 나의 사용자는 버튼을 가지고있다.wpf에서 사용자 정의 컨트롤에서 주 컨트롤로 데이터를 전달하는 방법
내가 사용자 정의 컨트롤에서 단추를 클릭하면 주 창 상태 표시 줄을 업데이트해야한다고 말합니다.
MVVM 패턴을 따르고 있습니다. 나는 이것을 어떻게 얻는 지 잘 모릅니다. 나는 wpf에서 초보자입니다.
사용자 정의 컨트롤의 DataContext (viewmodel)를 주 창과 동일하게 설정할 수 있습니다. viewModel에 속성을 유지하고 사용자 정의 컨트롤에 해당 속성을 바인딩하십시오. 따라서 컨트롤이 변경 될 때마다 Main에서 사용할 수있는 View Model에서 속성이 자동으로 업데이트됩니다.
나는 usercontrol이 자체 viewmodel과 함께 작동하는 것이 좋습니다. 주 창에는 상태 표시 줄 메신저 서비스를 초기화하는 역할을하는 주 컨트롤러가 있으며 사용자 제어보기 모델은 해당 서비스를 사용합니다.
사용자 정의 컨트롤의 뷰 모델은 RelayCommand를 통해 단추의 동작에 바인딩되며 동작을 실행하면 상태 표시 줄 서비스를 사용하여 상태를 업데이트합니다.
메인 창의 상태 표시 줄을 사용하여 응용 프로그램의 여러 사용자 컨트롤/페이지에서 작업 할 수 있습니다.
종속성 속성을 사용하여 주 제어에 UserControl을 보내야합니다.
예 : 기본 창에있는 텍스트 블록의 텍스트를 버튼에서 변경하려는 경우 USerControl에있는을 클릭하십시오.
가있는 UserControl에서
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("WriteText", typeof(string), typeof(UserControlnameSpace)) //Write Namespace of your UserControl where I mentioned
public string WriteText
{
get { return (bool)GetValue(TextProperty); }
set
{
SetValue(TextProperty , value);
}
}
ButtonClick 이벤트 현재 귀하의 UserControl이 DependencyProperty를 확인
당신은 변화를 반영하기 위해 TextBlock의 텍스트 특성에 DependencyProperty에 바인딩 할 필요가 당신의 UserControl은 INotifyPropertyChange를 구현해야합니다
public void Button_Click(object sender, RoutedEventArgs e)
{
WriteText="Hie"; //Write what you want to display on MainWindow.
}
뷰 모델 : -
private string _txtContent;
public string TxtContent
{
get
{
return _txtContent;
}
set
{
_txtContent = value;
RaisePropertyChanged("TxtContent");
}
}
주 창 : -
<TextBlock Text="{Binding TxtContent,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
당신이 당신의 UserControl을 포함하고 있습니다 : 귀하의 경우 귀하의 경우 UserControl을에서이 속성
<UserControl WriteText={Binding TxtContent Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
고마워요. 다시 사용할 수있는 mesome 코드 샘플을 제공해 주시겠습니까? –
나는 내 대답을 업데이 트했습니다. 이것 좀 봐 ... :) – Vishal
을 -Include mvvm 패턴에 의해 만들어지면 문제가 발생합니다 .. – loop