2013-05-31 52 views
1

我想創建一個使用WPF的MetroWindow控件內使用MahApps.Metro設置的彈出窗口。我創建了彈出窗口,並有其他幾個單選按鈕和分隔符。我現在添加一個數據網格來存放用作應用程序監視列表的StockSymbols列表。我遇到的問題是正確設置數據網格,使其不會自動增長超出彈出窗口的大小。如果您將行添加到數據網格中,您可以繼續添加,直到它流出窗口的外側。我想這樣做,這樣我就不必手動設置最大高度,並隨着窗口的增長動態增長。MahApps.Metro內的Datagrid Flyout

這裏是我的彈出當前代碼:

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

任何和所有幫助表示讚賞。

回答

0

我有同樣的問題。 我解決了這個問題,設置Flyout大小。 我認爲當WPF呈現網格並且Flyout大小小於網格大小時會出現問題。

無論如何,我們的Flyout是動態的,我不得不創建一個轉換器來獲得它的大小並將我的子控件設置爲相同的寬度

0

我解決了這個問題,只使用Dock Panel來保存Flyout中的所有控件。除了數據網格之外的所有控件都應該設置爲頂部對接,並且不在數據網格上設置對接。然後這會自動調整數據網格的大小以填充剩餘空間並且不再更多。