如何根据Window resize限制Resize Datagrid?

时间:2011-05-09 21:40:28

标签: silverlight datagrid

我想知道我使用的代码有什么问题。我试图通过下面提供的代码来限制基于浏览器窗口的数据网格的高度调整大小。也许,有一种更好的方法可以做到这一点。任何建议都非常感谢。

当我调整窗口大小时,我收到的错误太多了。

* System.ArgumentException未被用户代码处理   消息=值不在预期范围内。   堆栈跟踪:        在MS.Internal.XcpImports.CheckHResult(UInt32 hr)        在MS.Internal.XcpImports.SetValue(IManagedPeerBase obj,DependencyProperty属性,Double d)        在System.Windows.DependencyObject.SetValue(DependencyProperty属性,Double d)        在System.Windows.FrameworkElement.set_Height(Double value)        在SilverlightResizeTest.Content_Resized(Object sender,EventArgs e)        在System.Windows.Interop.Content.FireResized(Object sender,EventArgs args)        在System.Windows.Interop.SilverlightHost.FireResized(Object sender,EventArgs args)        在MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,Int32 actualArgsTypeIndex, 字符串eventName)   InnerException:*

代码:

public SilverlightResizeTest()
    {
        InitializeComponent();
        // Set the height for the DataGrid when the browser window changes size 
        App.Current.Host.Content.Resized += new System.EventHandler(Content_Resized);

        // Set the initial height for the DataGrid
        double x = App.Current.Host.Content.ActualHeight;
        if (x != 0)
        {
            DataGrid.Height = (x - 485.0);
        }
    }

    void Content_Resized(object sender, System.EventArgs e)
    {
        // Set the height for the DataGrid when the browser window changes size
        double x = App.Current.Host.Content.ActualHeight;
        if (x != 0)
        {
            DataGrid.Height = (x - 485.0);
        }
    }

1 个答案:

答案 0 :(得分:0)

以下是我认为出现的问题:如果应用内容小于485,您的身高就会变成负数。我很确定负高度会超出预期值范围。

我不确定你尝试做什么,但是不能通过在xaml中使用正确的控件来完成。具有两行且具有在485处定义的行高度之一的简单网格布局将实现相同的目的。

<Grid>
  <Grid.RowDefinitions>
    <RowDefiniton Height="485"/>
    <RowDefiniton Height="*"/>
  </Grid.RowDefinitions>
  ...
</Grid>