我无法让我的xaml以我想要的方式工作。
我想要的是这个。 我的ItemsControl的高度应为70.其余部分应填充DockPanel。 在DockPanel里面我有一个GridControl(来自DevExpress的DataGrid),它应该填满所有空白区域。 gridcontrol停靠在顶部。在网格控制下面,但仍然在底板上,我有一个最大高度为480的扩展器,它应该停靠在底部。
我遇到的问题是我无法让gridcontrol动态地改变它的高度,以便它填充停靠面板顶部和扩展器之间的所有剩余空间。
我做错了什么?
<Grid Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="70" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
<!--#region ItemControl-->
<ItemsControl
Grid.Row="0"
Grid.ColumnSpan="9"
HorizontalAlignment="Stretch"
IsTabStop="False"
ItemsSource="{Binding Path=ToolbarControlViewModel.CommandButtonList}"
Style="{DynamicResource ActionBarPanel}">
<ItemsControl.ItemsPanel>
...
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!--#endregion-->
<DockPanel Grid.Row="1">
<!--#region Listview-->
<dxg:GridControl
x:Name="CMGrid"
DockPanel.Dock="Top"
Margin="0,0,0,10"
ItemsSource="{Binding Path=CustomerManagementListViewModel.Customers}"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<dxg:GridControl.Columns>
...
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView
x:Name="CustomerListView"
AllowBestFit="True"
FocusedRow="{Binding Path=CustomerManagementListViewModel.SelectedCustomer, Mode=TwoWay}"
IsColumnMenuEnabled="False"
NavigationStyle="Row"
ShowGroupPanel="False"
AutoWidth="True"/>
</dxg:GridControl.View>
</dxg:GridControl>
<!--#endregion-->
<!--#region Controls-->
<Expander
MaxHeight="480"
VerticalContentAlignment="Stretch"
DockPanel.Dock="Bottom"
Header="{T:Translate Equipment,
Format=' {0}:'}"
IsExpanded="True"
Style="{StaticResource K2M_Epander_Base}" VerticalAlignment="Bottom">
<Expander.Content>
<Grid>
...
</Grid>
</Expander.Content>
</Expander>
<!--#endregion-->
</DockPanel>
答案 0 :(得分:1)
我很难获得这么快的分数,但如果问题仍然存在,我想我们可能会给未来的发现者一些关闭。
所以,public static Task<HttpResponseMessage> Run(
HttpRequestMessage req, ExecutionContext executionContext)
{
string invocationId = executionContext.InvocationId.ToString();
var processor = new Processor(invocationId);
return processor.Process(req);
}
public class Processor
{
private Logger logger;
public Processor(string invocationId)
{
this.logger = new Logger(invocationId);
}
public async Task<HttpResponseMessage> Process(HttpRequestMessage req)
{
await this.logger.Log("Start");
await this.DoStep1();
await this.DoStep2();
await this.logger.Log("Finish");
}
private async Task DoStep1()
{
await this.logger.Log("Step 1");
// ...
}
private async Task DoStep2()
{
await this.logger.Log("Step 2");
// ...
}
}
有其用途,但在这种情况下,它是你的罪魁祸首。由于嵌套在布局中的DockPanel基本上相当于将DockPanel
属性附加到GridControl。这解释为它只从父行的顶部向下消耗它所需的空间。
通过完全删除VerticalAlignment="Top"
(因为在这种情况下它是多余的)并将Row声明直接应用于DockPanel
,它可以充当父GridControl
的正常子节点。容器并将占用Row的Grid
声明提供的空间。
很高兴你把它分类,得到了快速的'n'。干杯:)