2010-07-28 14 views
7

Ok mam contentpresenter wewnątrz komórki siatki:Dlaczego wpis treści nie wypełnia komórka siatki?

 <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> 

contentpresenter znajdzie który UI elementem do wykorzystania przez DataTemplate określonym w zasobach:

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

Teraz wszystko działa zgodnie z oczekiwaniami, z wyjątkiem jedna rzecz: widok, który jest umieszczony wewnątrz elementu content-presenter w środowisku wykonawczym, nie rozwija się, aby wypełnić całą komórkę. Pozostawia duży margines po lewej i prawej stronie.

W jaki sposób wyświetlić widok wewnątrz edytora treści wypełnij cały dostępny obszar?

+1

Upewnij się, że nie ma wyraźnych/domyślnych ograniczeń rozmiaru w samym widoku. – devios1

Odpowiedz

2

Chaiguy mam! Widok miał wyraźną szerokość i wysokość, które ograniczały widok po umieszczeniu w komórce. Dzięki :-)

+0

Spędzić szaloną godzinę, aby to rozgryźć, a następnie wpadł na tę małą odpowiedź: odpowiedział OP, 0 przegranych. Pomyślałem sobie, że chyba NIGDY nie pomoże, ale spójrzmy. Tadaaaaa, ja również zadeklarowałem szerokość i wysokość na mojej kontroli użytkownika .... problem rozwiązany ... Poczuj się głupio, z ulgą i wdzięcznością w tym samym czasie! :) +1 – bas

2

Musisz ustawić HorizontalAlign = Stretch, VerticalAlign = Stretch na obramowanie i zawartość Presenter, aby wypełnić przestrzeń w siatce. i ustaw szerokość = auto.

+0

Wygląda na to, że nie działa – Marius

+0

Spróbuj zastosować go również do . –

9

HorizontalAlign = "Stretch" i VerticalAlign = "Stretch" są ważne; jednak musisz także pamiętać, jak działają sieci. Jednostki siatki są albo w pikselach bezwzględnych, "Auto", co oznacza, że ​​mają rozmiar dopasowany do ich zawartości (tj. Minimalny rozmiar, aby pokazać wszystko), lub "gwiazdki", co oznacza wypełnienie całej dostępnej przestrzeni.

Ustaw swoją drugą wysokość RowDefinition na "*". Możesz także ustawić łatwo rozpoznawalne pędzle i grubości na twojej siatce. Czasami łatwo jest pomyśleć, że X nie wypełnia całej dostępnej przestrzeni, gdy jest to naprawdę kontener X, lub kontener kontenera X, który nie wypełnia przestrzeni. Używaj jasnych kolorów podstawowych i dużych grubości (3 lub więcej) i szybko możesz powiedzieć, kto nie wypełnia rzeczy.

Powiązane problemy