이전 질문글이였던 "이중 바인딩을 하고 싶다!"는 결론적으로 실패하여... 다른 길을 찾고자 합니다.
--- 이전 소스 ---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<StackLayout Padding="24,24,24,40" Spacing="32" BindableLayout.ItemsSource="{Binding GRPItems}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Vertical">
<Label x:Name="CroupHeader" Text="{x:Binding Item1, Mode=TwoWay, UpdateSourceEventName=PropertyChanged}" FontFamily="NotoSansBold" FontSize="18" TextColor="#222222" Margin="0,0,0,1"/>
<CollectionView ItemsSource="{x:Binding Item2">
<CollectionView.ItemTemplate>
<DataTemplate>
<Label x:Name="MenuName" Text="{x:Binding Item2, Mode=TwoWay, UpdateSourceEventName=PropertyChanged}"
FontFamily="NotoSansMedium" FontSize="16" TextColor="#222222">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type vm:MenuViewModel}}, Path=MenuCommand}" CommandParameter="{x:Binding Item1}"/>
</Label.GestureRecognizers>
</Label>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
|
cs |
1
|
public ObservableCollection<Tuple<string, ObservableCollection<Tuple<string, string>>>> GRPItems;
|
cs |
모바일 UI에 대해 쥐뿔도 모르는 내가 "이렇게 하면 되겠지!?"라는 망상에 어떻게든 해보려고 했지만
안되는건 안되는거라는 걸 알고 포기했습니다.
(구글에서 아무거나 퍼온 예시 이미지입니다.)
위 예시 이미지 처럼 각 헤더들의 제목이 있고 해당 헤더에 해당하는 메뉴 버튼들을 모두 동적으로 만드는게 목표입니다...
인터넷 예시들을 보면 모두 헤더는 하드코딩 식으로 직접 만들고,
헤더 아래의 메뉴들만 CollectionView 혹은 ListView로 바인딩해서 동적으로 만들어주고 있습니다.
하지만 저는 헤더의 갯수가 몇개인지 알 수 없습니다. 데이터는 DB에 있으니까요.
따라서 헤더도 동적으로 만들어줘야 하고 각각의 헤더에 해당하는 메뉴들도 몇 개인지 알 수 없으니 동적으로 생성해주기 위해
바인딩을 해줘야 합니다.
mvvm 구조에서 만들고 있고, 이왕이면 동적 생성을 비하인드 코드가 아니라 xaml쪽에서 바인딩으로 해결하고 싶습니다.
ㅜㅜ...
6개의 댓글
무분별한 사용은 차단될 수 있습니다.
좋소사장
mvvm이라고해서 코드 비하인드를 안쓰는게 아님. mvvm의 최대 장점 그러니까 가장큰 목표는 테스트임. UI기능만 하는거라면 굳이 Viewmodel에서 처리할필요가 없음. 해외에 강의많은데... 왜 안보는겨...
스택레이아웃의 Visible property를 hidden으로 해놓고 클릭이벤트를 엮어줘서 Visible property 를 hidden에서 visible로 바꿔주면 됨. 굉장히 간단함. Prism이라서 ViewModel에서 커맨드만 엮어주면 끝남.
집에가게해줘
솔직히 내가 자마린 강의를 안 보는건 이번 플젝 끝나면 쓸일이 없을꺼 같아서 자마린 공부할 시간에
내 공부를 하고 싶어서 그런건 맞음...
그리고 지금 말한건 처음에 그룹명,메뉴들을 만들고 메뉴명들은 IsVisible=false로 해놨다가
클릭하면 해당 그룹의 메뉴들만 true로 바꾸라는 얘기잖아?
이것도 생각해 봤는데 사용자가 누른 그룹의 정보를 가지고 거기에 해당하는 메뉴들만 알겠는데...
댓글 쓰다가 생각났네
람다식으로 해당 그룹명 밑에 버튼들 만들기 해서 되는지 해봐야겠다!
좋소사장
나는 반대라구 생각해 강의보면서 공부해서 빠르게 프로젝트 마무리지어야 내 공부할 시간이 늘어난다 생각함.
ㅇㅇ 맞음 true로만 바꿔주면 됨. 이게 xaml에서 하는 가장 빠른방법임. 람다는왜...? prism이면 command code snippet 까지 제공되자나 그거써 그게 젤빠름
집에가게해줘
자마린 쓸 일 많을 수도 있다는 얘기는 안 하네...?ㅋㅋㅋㅋㅋ
좋소사장
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ.....
좋소사장
한국은 자마린은.... ㅎㅎ