2009-10-17 95 views
0

我試圖通過代碼更新wpf中的某些用戶控件,但沒有運氣。WPF中的代碼更新UI

這就是XAML:

<UserControl x:Class="SimuladorNocs.UI.Diagram.PropertiesWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:PropertyGrid="clr-namespace:Deepforest.WPF.Controls" 
> 
<DockPanel>   
    <StackPanel x:Name="stackPanel" Width="300" Height="600" HorizontalAlignment="Center"> 

     <PropertyGrid:PropertyGridControl Height="300" x:Name="MyPropertyGrid" /> 

    </StackPanel>  
</DockPanel> 

,這就是C#代碼:

public void SetInstance(object obj){ 
    MyPropertyGrid = new PropertyGridControl { Instance = obj, Height = 300 }; 
    stackPanel.Children.Clear(); 
    stackPanel.Children.Add(MyPropertyGrid); } 

最後,物業appers正在改變,但我無法看到UI的變化。我也試圖創建一個新的對象,而不是使用現有的MyPropertyGrid,沒有工作,也試圖不清除堆棧面板沒有成功...

我錯過了什麼?

感謝

回答

1

我沒有指定的propertygrid控件,但似乎沒有更新UI。你是否在該控件上和堆棧面板上嘗試「UpdateLayout()」?

0

換出PropertyGridControlLabel和它工作得很好。我建議你這樣做。如果它起作用,那更多的是什麼PropertyGridControl做錯了什麼的問題...

+0

不,它不適合我。 試圖做到這一點,但從另一個用戶控件調用SetInstance(),例如,當您從構造函數調用時,它的工作原理... – caiokf 2009-10-17 19:45:40

+1

在這種情況下,您可以發佈一個完全不需要外部庫的repro ? – 2009-10-17 19:54:02

1
stackPanel.InvalidateVisual(); 

請在最後一行添加。