ScatterView и ViewBox не работают должным образом - PullRequest
0 голосов
/ 27 октября 2010

Я определил следующий макет:

<Grid Name="RootGrid" Background="{StaticResource WindowBackground}" >
        <s:ScatterView Name="RootScatter">
            <Viewbox>
                <s:LibraryContainer Name="RootContainer" Grid.Row="0" ViewingMode="Bar">
                    <s:LibraryContainer.BarView>
                        <s:BarView Rows="2" NormalizedTransitionSize="2.5,0.8" ItemTemplate="{StaticResource ContainerItemTemplate}">
                        </s:BarView>
                    </s:LibraryContainer.BarView>
                    <s:LibraryContainer.StackView>
                        <s:StackView NormalizedTransitionSize="1,1" ItemTemplate="{StaticResource ContainerItemTemplate}">
                        </s:StackView>
                    </s:LibraryContainer.StackView>
                </s:LibraryContainer>
            </Viewbox>
        </s:ScatterView>
        <s:ScatterView Name="ClassScatter"></s:ScatterView>
    </Grid>
</s:SurfaceWindow>

Теперь я динамически добавляю Item во второй ScatterView:

public void expand(SurfaceWindow1 surfaceWindow)
        {
            Logging.Logger.getInstance().log("Expand class " + name);

            if (!isExpanded())
            {
                Viewbox vb = new Viewbox();
                SurfaceTextBox txt = new SurfaceTextBox();
                txt.Text = this.name + "\nLOC: " + this.getLoc() + "\nFanIn: " + this.getFanIn() + "\nFanOut: " + this.getFanOut() + "\nComplexity: " + this.getComplexity();
                txt.IsReadOnly = true;

                vb.Child = txt;
                surfaceWindow.ClassScatter.Items.Add(vb);
                this.setExpanded(true);
            }
        }

Это прекрасно работает, но, к сожалению, я не могу изменитьизменить размер, переместить или повернуть созданный объект.Любые намеки почему?

1 Ответ

1 голос
/ 27 октября 2010

Проблема в том, что ваш TextBox захватывает сенсорные контакты, и ScatterView не может захватывать их для перетаскивания / масштабирования / вращения TextBox. Есть два варианта решения вашей проблемы:

  1. Если вы хотите, чтобы элемент был подвижным, но не редактируемым пользователем, замените SurfaceTextBox на обычный TextBlock
  2. Если вы все еще хотите, чтобы текст был редактируемым, добавьте несколько полей в TextBox, чтобы создать «зону перетаскивания» вокруг элемента. Например: txt.Margin = new Thickness(20);
...