2011-04-22 4 views
3

최근 디자인 타임에 Visibility 특성에 문제가 발생하기 시작했습니다. 모든 것이 런타임에는 잘 작동하지만 Visibility 속성은 디자인 타임에 아무런 영향을 미치지 않습니다.WPF 가시성 속성 디자이너 문제

Visual Studio와 .net 프레임 워크를 다시 설치했지만 문제가 지속됩니다.

샘플 코드 : 디자인 타임에이 나타나는 동안

<StackPanel> 
     <TextBlock Text="X" Visibility="Collapsed" Background="Red" /> 
     <TextBlock Text="Y"></TextBlock> 
</StackPanel> 

런타임에서 X는 붕괴된다. 당신이 코드를 변경 한 후

+0

좋은 캐치지만 여전히 문제는 아닌지 의심 스럽습니다. 나는 그것이 내게 원하는 기능인 것 같다. – Rohit

+0

이것은 다른 컴퓨터에서 정상적으로 작동하므로이 특정 설치에 문제가 있다고 생각합니다. 나는 그 일을 해결할 수는 있지만, 다른 일이 깨지면 걱정이된다. – Goran

답변

3

VS2010 SP1을 설치하면 문제가 해결되었습니다. SP는 다음 주소에서 찾을 수 있습니다 : http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

+0

이 문제로 대부분의 사용자가 문제를 해결할 수 있다면 대답으로 표시 할 것입니다. – Goran

+0

나를 위해 그것을 너무 고정. 또한 SP1 이전의 일부 컴퓨터에서 작동한다는 것을 전혀 알지 못했습니다. –

1

이 어쩌면 ..

당신에게 도움이 ... Ctrl + Shift + B을 시도하지만 난 당신이 마이크로 소프트 익스프레션 블렌드를 설치하는 권 해드립니다. 그리고 모든 Xaml 마크 업을 만듭니다.


업데이트 :

또는 당신이 사용할 수 있습니다

public class VisibilityFixer: DependencyObject 
{ 
    public static bool GetFixDesigner(DependencyObject obj) 
    { 
     return (bool)obj.GetValue(FixDesignerProperty); 
    } 

    public static void SetFixDesigner(DependencyObject obj, bool value) 
    { 
     obj.SetValue(FixDesignerProperty, value); 
    } 

    // Using a DependencyProperty as the backing store for FixDesigner. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty FixDesignerProperty = 
     DependencyProperty.RegisterAttached("FixDesigner", typeof(bool), typeof(VisibilityFixer), 
     new UIPropertyMetadata(false, new PropertyChangedCallback(PropertyChanged))); 

    public static void PropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) 
    { 
     var obj = sender as FrameworkElement; 

     if (obj != null) 
     { 
      if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)) 
      { 
       if (obj.Visibility == Visibility.Collapsed) 
       { 
        obj.Opacity = 0; 
        obj.Height = 0; 
        obj.Width = 0; 
       } 
       else if (obj.Visibility == Visibility.Hidden) 
       { 
        obj.Opacity = 0; 
       }    
      } 
     } 
    } 
} 

과 같이 사용 ..

<StackPanel x:Name="LayoutRoot"> 
    <TextBlock TextWrapping="Wrap" 
     Visibility="Collapsed" 
     fx:VisibilityFixer.FixDesigner="True" 
     Text="TextBlock3243" HorizontalAlignment="Left" 
     Background="Red" /> 
    <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap"><Run Text="TextBlock"/></TextBlock> 
</StackPanel> 

후 사용 Ctrl + Shift + B

+0

Nopes, Dint work !! – Rohit

+0

제안을 주셔서 감사 합니다만 프로젝트를 다시 빌드하거나 디자인 창을 다시 열거 나 솔루션을 다시 열지 않아도 문제가 해결됩니다. 디자이너가 업데이트되지 않고 디자이너가 가시성 속성을 전혀 적용하지 않는 문제는 아닙니다. – Goran

+0

음, 사실 나는 같은 문제가 있다는 것을 알았지 만, Expression Blend에서 everithing이 잘 작동한다고 생각합니다. –