2009-10-17 5 views
0

wpf의 일부 사용자 정의 컨트롤을 코드로 업데이트하려고합니다.WPF의 코드로 UI 업데이트

<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# 코드입니다 : 다음 XAML의

결국

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

Label에 대한 PropertyGridControl을 스왑하고 괜찮 았는데. 나는 당신이 똑같이하는 것이 좋습니다. 작동하는 경우 PropertyGridControl의 잘못된 점이 더 많습니다 ...

+0

아니요, 제게 적합하지 않았습니다. 하려고하지만, 다른 usercontrol에서 SetInstance()에 대한 호출을 만들 때, 예를 들어 생성자에서 호출 할 때 ... – caiokf

+1

이 경우 외부 라이브러리가 필요하지 않은 전체 repro를 게시 할 수 있습니까? ? –

1
stackPanel.InvalidateVisual(); 

마지막 줄에 추가하십시오.

관련 문제