0

背景情報:簡単に言えば、当社は現在、Telerik Silverlight ツールと Silverlight Toolkit の両方を使用して、プログラムで必要なものを実現しています。Silverlight は消滅しつつあり、Silverlight Toolkit は 2011 年以降更新されていないため、Silverlight Toolkit へのすべての依存関係を削除し、これらのコントロールを Telerik の代替に置き換えて、両方のツールキットを使用しないようにしています。これにより、お客様は 10 MB のファイルではなく 5 MB のファイルをダウンロードするだけで済みます。

LayoutTransformer に代わる Telerik はなかったので、ソースからコードを取り出してプロジェクトに入れることにしました。ここから Toolkit からソース ファイルを取得した後、プロジェクトに配置してから、すべての参照を更新すると、少し問題が発生します。

問題の画面は次のようになるはずですが、良い

変更後は次のようになります:悪い


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

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

アセンブリからのコードではなく、引き出したコードをコントロールが参照するようにします。


そのすべての情報を保持しているグリッドは自動サイズ調整されておらず、代わりにすべての情報がその小さな領域に詰め込まれているようです


.すべてのコードが技術的に同じなのに?Toolkit からコードを取得してプロジェクトに配置する際に何か問題がありますか? 関連する情報だけに絞ろうとしましたが、さらに詳しい情報が必要な場合はお知らせください。ありがとう!

4

2 に答える 2

0

何をしても LayoutTransformer を機能させることができなかったので、最終的に RenderTransform に切り替えました。その変更から、ズームイン/ズームアウトするときに ScrollViewer が StackPanel の幅に応じてスクロールバーを変更しないという問題が発生しました (最初に LayoutTransform を使用した理由は、自動的にそれを行うためです)あなた)。これを修正するために、(変換中の) StackPanel を Canvas でラップするという回避策を見つけました。次に、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#: //on set zoom 関数の内部。

            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;
于 2014-10-28T00:50:53.313 に答える