2014-10-23 2 views
0

배경 정보 : 우리는 현재 Telerik Silverlight 도구와 Silverlight Toolkit을 모두 사용하여 프로그램에서 필요한 것을 수행하고 있습니다. Silverlight가 사라지고 Silverlight Toolkit이 2011 년부터 업데이트되지 않았기 때문에 Silverlight Toolkit에 대한 모든 종속성을 제거하고 Telerik Alternative로 해당 컨트롤을 대체하여 툴킷을 모두 사용하지 않습니다. 이렇게하면 고객은 10MB 파일 대신 5MB 파일 만 다운로드하면됩니다.

LayoutTransformer에 대한 Telerik 대안이 없기 때문에 소스 코드를 가져 와서 프로젝트에 넣기로했습니다. 툴킷의 소스 파일을 here에서 가져 와서 프로젝트에 배치 한 다음 모든 참조를 업데이트하면 약간의 문제가 발생합니다.

문제의 화면은 다음과 같이 가정한다 : good

을하지만 변경 후 다음과 같이 찾고 끝 : 나는 변경 bad


있는 유일한 방법이었다Silverlight Toolkit에서 LayoutTransformer 제거 - 이상한 행동

<UserControl 
    ... 
    xmlns:layoutToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit"> 

<UserControl 
    ... 
    xmlns:layoutToolkit="clr-namespace:Company.MyApp.App.Controls.LayoutTransformer"> 
으로

컨트롤에서 어셈블리의 코드 대신 끌어온 코드를 참조하도록합니다.


모든 정보를 보유하고있는 그리드가 자동 크기 조정을하지 않고 대신 모든 정보가 그 작은 영역에 끼어 들었습니다. (해당 코드가 변경되지는 않았지만)


새로운 LayoutTransformer는 모든 코드가 기술적으로 동일하더라도 이렇게 동작합니까? 툴킷에서 코드를 가져 와서 프로젝트에 배치하는 데 문제가 있습니까? 관련 정보로만 못 박으려고했지만 더 많은 정보가 필요하면 알려주세요. 감사!

+0

Silverlight5를 사용하고 있습니까? 왜냐하면'LayoutTransformer'가 툴킷에서 SL5가있는 SL 기반 라이브러리로 옮겨 졌기 때문에 외부 어셈블리없이 사용할 수 있습니다. – Martin

+0

예 SL5를 사용하고 있습니다. 나는 내일 다시 사무실로 돌아갈 때 그것을 다시 볼 것입니다. – Max

답변

0

LayoutTransformer가 내가 한 일과 상관없이 작동하지 않게되어 RenderTransform으로 전환되었습니다. 그 변화에서 나는 ScrollViewer가 StackPanel의 너비에 따라 스크롤 바를 바꾸지 못하는 문제를 겪었습니다. LayoutPanel의 경우 처음부터 LayoutTransform을 사용하는 이유는 자동으로 그렇게하기 때문입니다 당신). 이 문제를 해결하기 위해 Canvas에서 StackPanel을 변형하여 해결 방법을 발견했습니다. 그런 다음 StackPanel이 변형 될 때 Canvas의 크기를 설정합니다. 앞으로 필요로하는 사람들을위한 코드는 다음과 같습니다.

XAML :

   <ScrollViewer 
        x:Name="PageScrollViewer" 
        HorizontalScrollBarVisibility="Auto" 
        VerticalScrollBarVisibility="Auto" 
        Background="#404040"> 
        <Canvas x:Name="DocumentPanelHolder" UseLayoutRounding="False"> 
         <StackPanel x:Name="DocumentPanel" Orientation="Vertical"/> 
        </Canvas> 
       </ScrollViewer> 

C 번호 : // 설정에 줌 기능 내부.

  ScaleTransform st = new ScaleTransform(); 
      st.ScaleX = newZoomValue; 
      st.ScaleY = newZoomValue; 
      this.DocumentPanel.RenderTransform = st; 
      this.DocumentPanel.UpdateLayout(); 
      this.DocumentPanelHolder.Height = this.DocumentPanel.ActualHeight * newZoomValue; 
      this.DocumentPanelHolder.Width = this.DocumentPanel.ActualWidth * newZoomValue; 
0

제 생각 엔 XAML for the control style을 애플리케이션 리소스에 복사해야합니다.

<Style TargetType="layoutToolkit:LayoutTransformer"> 
    <Setter Property="Foreground" Value="#FF000000"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="layoutToolkit:LayoutTransformer"> 
       <Grid x:Name="TransformRoot" Background="{TemplateBinding Background}"> 
        <ContentPresenter 
         x:Name="Presenter" 
         Content="{TemplateBinding Content}" 
         ContentTemplate="{TemplateBinding ContentTemplate}"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

나는 또한 그것을 옮겼고, 심지어 그것들을 XAML/코드 뒤에 연결하려고 시도했지만 그 문제는 해결되지 않았다. 문제는 \ – Max