我有一個頁面,其中我有一個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