2012-10-23 197 views
0

我有以下XAML文件设置高度和宽度的控制窗口wihtin大小WPF

<Window x:Class="NodeXL_Graph_Drawer.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit" 
    xmlns:controls="clr-namespace:Technewlogic.Samples.WpfModalDialog"      
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}" 
Title="NodeXL Graph" xmlns:my="clr-namespace:Smrf.NodeXL.Visualization.Wpf;assembly=Smrf.NodeXL.Control.Wpf" Loaded="Window_Loaded"> 
<Grid> 
    <Grid x:Name="ModalDialogParent" > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" x:Name="col1"/> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <StackPanel Grid.Column="0" > 
      <my:NodeXLControl Name="nodeXLControl1" HorizontalAlignment="Left" EdgeSelectedColor="Red" VertexSelectedColor="Red" ShowVertexToolTips="True" VertexClick="nodeXLControl1_VertexClick" SelectionChanged="nodeXLControl1_SelectionChanged" MouseMode="Select" MouseAlsoSelectsIncidentEdges="False" ContextMenuOpening="nodeXLControl1_ContextMenuOpening" GraphLaidOut="nodeXLControl1_GraphLaidOut"> 

      </my:NodeXLControl> 
     </StackPanel> 
     <!--<ComboBox Height="23" Margin="39,12,119,0" Name="comboBox1" VerticalAlignment="Top" SelectionChanged="comboBox1_SelectionChanged" />--> 
     <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch"/> 

     <StackPanel Grid.Column="2">     
      <toolkit:DataGrid AutoGenerateColumns="True" Margin="0,62,0,0" Name="grdGraphDetails" ItemsSource="{Binding GraphDetail}" IsReadOnly="True" 
          HorizontalAlignment="Right" Width="109" MouseLeftButtonUp="grdGraphDetails_MouseLeftButtonUp" 
          SelectedValuePath="Key" Height="179" />    
     </StackPanel> 

    </Grid> 
    <controls:ModalDialog x:Name="ModalDialog"></controls:ModalDialog>   
    <controls:ModalDialog1 x:Name="ModalDialog1"></controls:ModalDialog1> 
</Grid>  

在这里,我有两个控制NodeXlControl1和DataGrid1中通过网seprator seprated页面上。当窗口加载时NodeXlControl1不在网格列的宽度和高度内。我希望nodexlcontrol1应显示在网格列的宽度和高度。如果它超出了列的宽度和高度的限制,滚动条应该到来。

+0

如果您只发布与问题相关的代码部分,那将会很好。例如'<我的:NodeXLControl.ContextMenu>'完全没有必要。 – LPL

+1

NodeXLControl有一个内置的ScrollViewer吗?否则,您的控件应该如何知道您需要这种行为?将NodeXLControl包装在ScrollViewer中,根据控件的工作方式,它应该可以直接使用。 – dowhilefor

回答

0

如果您my:NodeXLControl内部有一些滚动浏览器(像一些ItemsControlScrollViewer基儿),那么只需在Grid包装my:NodeXLControl会做的伎俩。

StackPanel扩大到溢出的儿童。 Grid扩展到外部容器的空间可用性。

<Grid> 
    <my:NodeXLControl ... /> 

应该这样做。

但是,如果你my:NodeXLControl没有滚动浏览器中,那么你就需要相应地把它包内的一个,并提供absolute宽度或高度,或把它包一个Grid它里面绑定到它的即时拍摄空间,并显示滚动条。

例如

<Grid> 
     <ScrollViewer ...> 
     <my:NodeXLControl ...> 
+0

我可以在窗口加载时获得网格列的宽度和高度吗? –

+0

没有。网格不是这样设计的。如果您已经完成了适当的面板布局,则“网格”将按照父容器的大小进行调整。 –

相关问题