2017-09-13 4 views
0

에 너비를 조정하기위한 (창 목록 자체보다 작은 경우는이 current with big windowWPF의 GridView는 내 WPF 응용 프로그램에서 목록보기가 가능한 공간의 크기

처럼 보인다

<ListView Name="generatorsList" ItemsSource="{Binding GeneratorsList}" SelectionMode="Single"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn DisplayMemberBinding="{Binding Name}"> 
       <GridViewColumn.Header> 
        <GridViewColumnHeader Tag="Name">Name</GridViewColumnHeader> 
       </GridViewColumn.Header> 
      </GridViewColumn> 
      <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Type}" /> 
      <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}" /> 
      <GridViewColumn Header="Actions" Width="60"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         //buttons 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

예를 들어 설명이 표시된 예제와 매우 비슷한 경우) 스크롤 막대가 형성되고 GridView은 그대로 유지되므로 작업 버튼이 화면에 표시되지 않습니다 (사용자가 스크롤 막대를 드래그해야 함). current with small window

사용자가 ListView를 표시 할 때 Actions 열이 항상 표시되도록 초기화시 현재 창 너비를 기준으로 최대 열 너비를 설정하고 싶습니다. 그 expected result

와 마찬가지로 다음 사용자가 자신이 수동으로 열 (그래서 실제 "maxwidth는"단지 width, 설정되어 있지 않은)를 크기를 조정할 수 있습니다하고자하는 경우. *으로 작업을 시도했지만 GridView에서 해당 자식을 알 수 없으므로 *이 작동하지 않습니다. 은 열당 원하는 최대 너비를 설정할 수 없기 때문에 좋은 옵션이 아닙니다. 일정한 너비 값은 필요하지 않기 때문에 바람직하지 않습니다. 가변적 인 창 크기 (사용 가능한 공간 크기)에 의존합니다. 코드에서 어떤 종류의 이벤트가 필요하다고 가정하지만 적절한 방식으로 어떻게 처리해야하는지 모르겠습니다. 이 같은

+1

항상 앞면에 Actions를 배치 할 수 있습니다. 이렇게하면 창이나 열 너비와 상관없이 항상 동일한 위치에 있습니다. – cguedel

+0

작동하지만 트릭입니다. 앞면에있는 작업 버튼으로 목록이 잘 보이지 않습니다. 또한'Name' 필드가 너무 길면 어떻게 될까요? – Erexo

답변

1

시도 뭔가 :

<DataGrid Name="generatorsList" 
      ItemsSource="{Binding GeneratorsList}" 
      AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Name" 
          Binding="{Binding Name}" 
          Width="*"/> 

     <DataGridTextColumn Header="Type" 
          Binding="{Binding Type}"/> 

     <DataGridTextColumn Header="Description" 
          Binding="{Binding Description}" 
          Width="2*"/> 

     <DataGridTemplateColumn Header="Actions" 
           Width="auto" 
           MinWidth="60"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <!--buttons--> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

나는 (내 의견으로는이 경우에 더) 데이터 그리드로 목록보기 변경되었습니다.

+0

의도대로 크기가 조정되었지만 다음과 같이 진행되었습니다. https://imgur.com/a/G9SWa 'DataGrid'는 모든 소스 항목 속성 자체를 추가 한 것으로 보입니까? – Erexo

+0

죄송합니다, 이것을 잊었습니다. 'DataGrid'는 자동으로'ItemsSource'를 기반으로 컬럼을 생성합니다. 'AutoGenerateColumns = "False"를'DataGrid'에 설정하면 괜찮을 것입니다. (나는 또한이 수정을 포함하는 나의 대답을 편집했다) –

+1

지금 그것은 잘되고있다, 고마워! 또한 내 자신의 필요에 따라 해당 속성을 DataGrid에 추가했습니다. Background = "Transparent"GridLinesVisibility = "None"CanUserResizeRows = "False" CanUserReorderColumns = "False"RowHeaderWidth = "0"IsReadOnly = "True"SelectionMode = "Single "' – Erexo