2010-07-28 37 views
7

Ok Tôi có một ContentPresenter bên trong một tế bào lưới:Tại sao nội dung không điền vào ô lưới?

 <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"></RowDefinition> 
       <RowDefinition></RowDefinition> 
      </Grid.RowDefinitions> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition></ColumnDefinition> 
      </Grid.ColumnDefinitions> 

      <WrapPanel Grid.Row="0" Grid.Column="0"> 
       <RadioButton GroupName="a" IsChecked="{Binding Path=SpecifyRatedValues, Mode=TwoWay}">Specify</RadioButton> 
       <RadioButton GroupName="b" IsChecked="{Binding Path=SpecifyRatedValues, Converter={StaticResource invertBoolean}}">Auto generate</RadioButton> 
      </WrapPanel> 

      <Border BorderBrush="Black" BorderThickness="3" Grid.Row="1" Grid.Column="0"> 
       <ContentPresenter Content="{Binding Path=RatedValues}"></ContentPresenter> 
      </Border>      
     </Grid> 

Các ContentPresenter thấy mà UI yếu tố để sử dụng bởi các datatemplate xác định theo nguồn:

<DataTemplate DataType="{x:Type ViewModels:RatedValuesViewModel}"> 
     <Views:RatedValuesView /> 
    </DataTemplate> 

Bây giờ, mọi thứ hoạt động như mong đợi, ngoại trừ một điều: Chế độ xem được đặt bên trong contentpresenter trong thời gian chạy không mở rộng để lấp đầy toàn bộ ô. Nó để lại một lề lớn ở bên trái và bên phải.

Tôi làm cách nào để chế độ xem bên trong contentpresenter lấp đầy toàn bộ khu vực có sẵn?

+1

Đảm bảo không có ràng buộc kích thước rõ ràng/ẩn trong chính chế độ xem. – devios1

Trả lời

2

Chaiguy hiểu rồi! Chế độ xem có Chiều rộng và Chiều cao khai phá làm hạn chế chế độ xem khi được đặt trong ô. Cảm ơn :-)

+0

Hãy dành một giờ để tìm ra điều này, sau đó chạy vào câu trả lời nhỏ này: trả lời bởi OP, 0 upvotes. Nghĩ về bản thân mình, điều đó có lẽ KHÔNG BAO GIỜ sẽ giúp đỡ, nhưng, hãy nhìn xem nào. Tadaaaaa, tôi cũng tuyên bố chiều rộng và chiều cao trên điều khiển người dùng của mình .... vấn đề được giải quyết ... Cảm thấy ngu ngốc, nhẹ nhõm và biết ơn cùng một lúc! :) +1 – bas

2

Bạn phải đặt HorizontalAlign = Stretch, VerticalAlign = Kéo dài cho cả Đường viền và Trình bày nội dung để lấp đầy khoảng trống trong lưới. và tạo width = auto.

+0

Dường như không hoạt động – Marius

+0

Hãy thử áp dụng nó cho . –

9

HorizontalAlign = "Stretch" và VerticalAlign = "Stretch" là quan trọng; tuy nhiên, bạn cũng phải nhớ cách Grids hoạt động. Đơn vị lưới nằm trong pixel tuyệt đối, "Tự động", có nghĩa là kích thước của chúng phù hợp với nội dung của chúng (nghĩa là kích thước tối thiểu để hiển thị mọi thứ) hoặc "sao" có nghĩa là lấp đầy tất cả không gian có sẵn.

Đặt chiều cao RowDefinition thứ hai thành "*". Bạn cũng có thể muốn đặt bàn chải và độ dày đường viền dễ phân biệt trên lưới của mình. Đôi khi, thật dễ dàng để nghĩ rằng X không lấp đầy tất cả không gian có sẵn, khi nó thực sự là X của container, hoặc container của X container không lấp đầy không gian. Sử dụng màu sắc chính sáng và độ dày lớn (3 hoặc hơn) và bạn có thể nói nhanh chóng những người không làm đầy mọi thứ.

Các vấn đề liên quan