我有一个页面,其中我有一个2列的网格,一个容纳80 *宽度,另一个容纳20 *。在网格下面是一个堆栈面板,我在运行时加载UI元素(子堆栈面板)。WPF元素绑定与动态生成的UI元素
我的目标是将堆叠面板的宽度绑定到网格的列。如果动态内容在设计视图中被嘲弄为静态,这完美地工作并且stackpenels调整大小。但是,当应用程序运行时,绑定失败并且宽度没有绑定。
有什么办法刷新绑定,以便我可以通知堆叠面板引用网格的宽度并配置其大小?
更新: 这是我的XAML的样子:
<Page x:Class="WPFTestApp.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid x:Name="resizeGrid"
Grid.Column="0" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="leftColumn"
Width="80*" />
<ColumnDefinition x:Name="rightColumn"
Width="20*" />
</Grid.ColumnDefinitions>
</Grid>
<StackPanel x:Name="contentPanel"
Grid.Column="0" Grid.Row="0" >
<!-- Dynamic StackPanels are added here -->
</StackPanel>
</Grid>
</Page>
在我的代码,我创建的StackPanel元素,并说将它添加到的ContentPanel: contentPanel.Children.Add(...) ;我不得不在这里使用StackPanels。 :-(
动态创建的StackPanel元件的标记如下(请注意,我在XAML使用绑定到电网已经):
<StackPanel x:Name="element01"
Orientation="Horizontal"
Width="{Binding ElementName=resizeGrid, Path=ActualWidth}" >
<StackPanel x:Name="leftPanel"
Orientation="Vertical"
Width="{Binding ElementName=leftColumn, Path=ActualWidth}">
<!-- Content goes here -->
</StackPanel>
<StackPanel x:Name="rightPanel"
Orientation="Vertical"
Width="{Binding ElementName=rightColumn, Path=ActualWidth}">
<!-- Content goes here -->
</StackPanel>
</StackPanel>
用于我的动态的StackPanel元素的XAML代码是通过XSLT转换
注意的xmlns产生:X命名空间动态的StackPanel这也有,因为它正在通过XSLT生成做
你有代码示例吗? – 2010-09-03 12:56:10
如果将一个StackPanel添加到网格中,它将自动扩展以填充已添加的列的整个宽度。 – 2010-09-03 13:28:30
我已更新该帖子的更多详细信息。谢谢! – shehandavy 2010-09-03 17:03:03