1

WPF を使用して MetroWindow コントロール内で MahApps.Metro を使用して設定のフライアウトを作成しようとしています。フライアウトを作成し、他にもいくつかのラジオ ボタンとセパレーターを用意しました。現在、アプリケーションのウォッチ リストとして使用される StockSymbols のリストを保持するデータグリッドを追加しています。私が問題を抱えているのは、フライアウトのサイズを超えて自動拡張しないようにデータグリッドを適切に設定することです。データグリッドに行を追加すると、ウィンドウの外側に行が流れるまで追加を続けることができます。最大の高さを手動で設定する必要がなく、ウィンドウが大きくなるにつれて動的に大きくなるようにしたいと思います。

フライアウトの現在のコードは次のとおりです。

<Controls:MetroWindow.Flyouts>
  <Controls:Flyout Header="Settings"
                   Background="#9f000000"
                   Position="Right"
                   IsOpen="{Binding IsSettingsFlyoutOpen}">
    <DockPanel HorizontalAlignment="Stretch"
               VerticalAlignment="Stretch">
      <StackPanel Orientation="Vertical"
                  VerticalAlignment="Top"
                  HorizontalAlignment="Center"
                  Margin="20,0"
                  DockPanel.Dock="Top">
        <Label Content="Theme"
               Style="{StaticResource DescriptionHeaderStyle}" />
        <StackPanel Orientation="Horizontal">
          <RadioButton Content="Dark"
                       Margin="0,0,5,0"
                       IsChecked="True"
                       Checked="ThemeDark" />
          <RadioButton Content="Light"
                       Margin="0,0,5,0"
                       Checked="ThemeLight" />
        </StackPanel>
        <Separator Margin="0,10,0,10" />
        <Label Content="Accent"
               Style="{StaticResource DescriptionHeaderStyle}" />
        <StackPanel Orientation="Vertical">
          <RadioButton Content="Black"
                       Margin="0,5,0,0" />
          <RadioButton Content="Blue"
                       Margin="0,5,0,0"
                       Checked="AccentBlue" />
          <RadioButton Content="Red"
                       Margin="0,5,0,0"
                       Checked="AccentRed" />
          <RadioButton Content="Green"
                       Margin="0,5,0,0"
                       Checked="AccentGreen" />
          <RadioButton Content="Orange"
                       Margin="0,5,0,0"
                       IsChecked="True"
                       Checked="AccentOrange" />
          <RadioButton Content="Purple"
                       Margin="0,5,0,0"
                       Checked="AccentPurple" />
        </StackPanel>
        <Separator Margin="0,10,0,10" />
      </StackPanel>
      <StackPanel Orientation="Vertical"
                  Height="Auto"
                  VerticalAlignment="Top"
                  DockPanel.Dock="Bottom"
                  Margin="20,0">
        <Label Content="Watch List"
               Style="{StaticResource DescriptionHeaderStyle}" />
        <DataGrid ItemsSource="{Binding WatchList}"
                  AutoGenerateColumns="False"
                  CanUserResizeRows="False"
                  CanUserReorderColumns="False"
                  HeadersVisibility="Column">
          <DataGrid.Columns>
            <DataGridTextColumn Header="Symbol"
                                Binding="{Binding Symbol}" />
            <DataGridTextColumn Header="Name"
                                Binding="{Binding Name}" />
          </DataGrid.Columns>
        </DataGrid>
      </StackPanel>
    </DockPanel>
  </Controls:Flyout>
</Controls:MetroWindow.Flyouts>

ありとあらゆる助けをいただければ幸いです。

4

2 に答える 2

0

フライアウト内のすべてのコントロールを保持するためにドック パネルのみを使用して、この問題を解決しました。データ グリッド以外のすべてのコントロールをトップ ドッキングに設定し、データ グリッドにドッキングを設定しないでください。これにより、データグリッドのサイズが自動的に調整され、残りのスペースが埋められます。

于 2013-06-05T18:34:10.357 に答える