머플러
1
제가 wpf 에서 tab control을 사용중에
1번 tab item에서 datagrid 에 있는 데이터 하나를 더블클릭 했을경우, 그 데이터 값이
2번 tab item으로 이동시키려는 작업을 하는중입니다.
public void MoveresultTab(object obj)
{
MainViewModel.ChangeResults = true;
Time = Records[SelectedValue].Time; //records tab(1번tab)에 있는 time을 옮기기
}
저렇게 tab을 이동시킨 후,
public string _time ;
public string Time
{
get { return _time; }
set
{
_time = value;
OnPropertyChanged("Time");
}
}
이렇게 바인딩 시켜놓은 time을 적용시키려 했는데
디버깅을 해보면 _time, Time 값들은 바뀌어도 UI에선 값이 바뀌지 않더라구요… 왜그럴까요 ㅠㅠ
2개의 좋아요
@머플러 환영합니다
혹시 소스코드 내용을 좀 더 알려주실 수 있으실까요?
간소화 해서 보여주셔도 좋고요.
디버깅으로 set
Time 값이 문제 없음은 확인하셨으니,
TabControl과 {Binding Time}
을 포함하는 Xaml 화면을 봐야 알 것 같습니다.
혹시 MoveresultTab()
함수가 비하인드 코드에서 실행하나요?
내용에 MainViewModel.ChangeResults = true;
가 있는 걸로 봐선 VM은 따로 있는 것 같은데,
이곳의 Time
에 값을 업데이트하고 있는 것 같아서요.
비하인드 코드는 기본적으로 XAML과 같이 만들어지는 cs 파일입니다
(ex, MainWindow.xaml.cs
).
만약 비하인드 코드에 쓰셨다면 해당 컨트롤에 직접 값을 업데이트하거나 비하인드 코드 자체가 VM이 되어야 합니다.
가장 간단한 해결 방법으로는 맨 아래쪽에 쓰신 Time
을 MainViewModel
에 똑같이 정의하면 될 것 같아요.
1개의 좋아요
머플러
5
TabControl TabStripPlacement=“Left” HorizontalAlignment=“Left” Height=“658” Margin=“10,32,0,0” VerticalAlignment=“Top” Width=“1294”
TabItem Header=“Data”
Grid Background=“#FFE5E5E5”
TextBlock HorizontalAlignment=“Left” Height=“27” Margin=“10,45,0,0” Text=“{Binding Time}” TextWrapping=“Wrap” VerticalAlignment=“Top” Width=“113” DataContext=“{Binding page1}”/
/Grid
/TabItem
/TabControl
이렇게 xaml을 달았습니다!코드로 표시
1개의 좋아요
머플러
6
Time 만 MainViewModel 옮겨도 안되네요… 맨처음 _time = “1” 이렇게 해놓으면 1은 들어가있는데
갱신이 안되는거같기도해요…
1개의 좋아요
@머플러 전체 소스코드를 올려주시거나 구체적으로 작업을 말씀해주시면 샘플 만들어드릴 수 있어요!
그리고 이 문서 참고하시면 질문 작성하실 떄 코드를 좀 더 가독성 있게 올리실 수 있습니다.
Markdown 코드가 포함된 문서 작성 요령
2개의 좋아요
머플러
9
지금 제가생각하는 문제는
tabcontrol 에서 tab item1 번과 tabitem 2번을 서로 다른 ViewModel과 xaml 을 만들고,
tabItem 1번의 datagrid에서 더블클릭한것이
tabitem 2번에 그 정보들이 출력되게 하는건데
이 더블클릭하고 출력되게 하는 과정은 또다른 ViewModel에서 실행을 하게되어서
서로 바인딩된것들끼리 영향을 못주는거같아요. static말고 다른방법이있나요?
1개의 좋아요
@머플러 아하 알겠네요.
두 탭이 물리적으로 다른 ViewModel을 사용하고 있다면 말씀하신 것 처럼 static으로 처리할 수도 있지만 Binding을 이용하여 다양하게 접근도 가능합니다. 이따가 간단하게 샘플 만들어드릴게요.
머플러
11
너무 친절하십니다…! 샘플기다리겠습니다 감사해요!
1개의 좋아요
원인을 대략 알 것 같은데 뭔가 말로 설명하기 굉장히 어려운 케이스네요…
Github 같은 곳에 코드를 올리셔서 다른 분께 도움을 받는 것이 가장 좋을 것 같아요.
1개의 좋아요
머플러
14
주신 코드 잘 받았습니다 감사합니다!
지금 봤는데 1개의 xaml에서 작동하는거랑 tab마다 서로다른 xaml에서 작용하는게 같을지는 모르겠지만
한번 참고삼아 해보겠습니다…!
1개의 좋아요
@머플러
해보시고 더 말씀해주시면 소스 계속 고쳐볼게요.