WPF Menu 및 TreeView 질문드립니다.

이번에 Menu를 만들던 도중 메뉴버튼을 클릭시 MenuItem들이 나오는데
그중에 한개를 TreeView 형식처럼 클릭시 아래로 목록이 나오게 하는 것을 만드려고 합니다. 근데 제가 메뉴의 Height 사이즈를 35로 맞춰놓은지라 Treeview를 사용하면 만들어져도 상위 treeview랑 하위treeview가 35사이즈 안에서 같이나타납니다.

<Menu Style="{StaticResource MenuTop}" >
    <MenuItem Style="{StaticResource MenuItemIndexStyle}" ItemContainerStyle="{StaticResource MenuItem_x300}">
        <MenuItem.Header>
                <Image Style="{StaticResource menu}"/>
        </MenuItem.Header>
        <TreeView >
            <TreeViewItem Header="aaa">
                <TreeViewItem Header="bbb"/>
            </TreeViewItem>
        </TreeView>
        <MenuItem Header="111"/>
        <MenuItem Header="222"/>
        <MenuItem Header="333"/>
    </MenuItem>

</Menu>

위의 방식으로 했습니다. MenuItemIndexStyle에서 Height의 크기를 지정했고 스타일은

여기에 있는 2번째 style을 사용했습니다.

혹시 TreeView를 쓰지않고 TreeView와 같이 MenuItem만으로 클릭시 하위에 메뉴가 나오게 하던가
TreeView를 사용해서 누를시 하위도 각각Height크기가 35를 가지게 하는 방법이 있는지 알고싶습니다.
222

예시 그림입니다…

2개의 좋아요
  • TreeView를 사용하지 않고 MenuItem만으로 원하는 동작을 간단하게 할 수 있는 방법은 모르겠습니다.
  • Height 대신 MinHeight로 설정을 해보세요. (TreeView의 Height는 MenuItem 컨테이너 스타일과 별개로 지정해야 합니다)

image

3개의 좋아요

컨테이너 스타일은 별개로 지정해야 한다고 하셨는데

컨테이너 스타일은 그대로 두면서 TreeView에서 또 따로 스타일을 적용시키란 말씀이신가요?

2개의 좋아요

@Saruna 정확히 이해를 하진 못했지만, TreeView의 ItemContainerStyle 또는 TreeViewItem 스타일을 통해 Height 값을 설정하시면 될 것 같습니다.

혹시 해결이 안되시면 좀 더 구첵적으로 설명해주시면 좋을 것 같습니다. :smile:

3개의 좋아요

이렇게까지 해야하나? 라고 생각이 드실 수 있는데,

@jamesnet214 님 방법대로 TreeViewItem 스타일을 주시는게 좋을 것 같습니다.

그리고 사실 TreeViewItem이라는 컨트롤은 매우매우 복잡하게 생겼기 때문에 기본 틀을 가져다 써야합니다.

TreeView Styles and Templates - WPF .NET Framework | Microsoft Learn

위에서 TreeViewItem과 유관한 스타일을 몽땅 가져다 쓰시면 되고 Height만 35로 지정해주시면 될 거 같습니다.

WPF가 사실 이런게 불편한 건 맞습니다.

저도 어제 TreeViewItem의 Background 하나 바꾼다고 TreeViewItem 스타일 몽땅 가져다가 사용하고 Background만 바꿔줬네요.

3개의 좋아요

감사합니다! 크기는 해결했습니다
크기를 해결하니 이제 toggleButton이랑 header가 Vertical center로 줘도 중앙으로 안가는 이유랑 ToggleButton을 없애고 글씨만 눌러서도 펼쳐지게 만드는 산이 또 남았네요 :sweat_smile:

3개의 좋아요

만져야할게 너무 많다보니 스타일을 전부 가져다 쓰는게 그나마 편하겠네요
감사합니다 한번 해보겠습니다.

3개의 좋아요

혹시 질문과는 다르지만 말씀하신 스타일을 적용시키고 보는 와중에 toggleButton을 클릭시 하위 tree들이 나오면서 togglebutton과 header가 위로 조금씩 올라가는데 혹시 저 스타일에서 설정하는 곳이 있나요? 봐도 못 찾은건지 안 보이네요…

3개의 좋아요

아 찾았습니다~

3개의 좋아요

@Saruna 정리 좀 되시면 내용도 좀 소개패주시면 넘 좋을 것 같습니다!! :smile:

2개의 좋아요

이거 보다 보니 궁금한데, TreeView 는 왜 쓰는 거죠? MenuItem 밑에 MenuItem 을 넣지 않고 TreeView 를 넣는 이유가 있나요?

<MenuItem Header="aaa">
    <MenuItem Header="bbb"/>
    <MenuItem Header="ccc"/>
    <MenuItem Header="ddd"/>
</MenuItem>
1개의 좋아요

저도 MenuItem밑에 MenuItem을 넣고싶긴한데
만드는 와중에 MenuItem 클릭시 옆으로 MenuItem이 나오는게 아닌
상위menu클릭시 하위Menu가 아래로 펼쳐지는 예제를 봤어서 설마 TreeView를 써서 한건가? 싶어서 질문했습니다

2개의 좋아요

제생각엔 MenuItem Style을 그런식으로 만든게 아닌가 합니다.

2개의 좋아요

역시 그런걸까요
만들면서도 뭔가 비슷하게 만든 것 같은데
이건 아닌 것 같은 느낌이 들더라구요…

2개의 좋아요