WPF:如何链接两个ViewBox?

时间:2017-03-30 16:10:35

标签: wpf viewbox

是否可以链接两个ViewBox,以便它们始终使用相同的比例因子? 或者是否可以提取ViewBox的当前比例因子以在另一个元素的ScaleTransform中使用?

谢谢。

1 个答案:

答案 0 :(得分:0)

我想到了一个主意。我认为我们可以利用Grid的SharedSizeGroup功能来做到这一点。

这是一个简单的示例。

<ListBox Grid.IsSharedSizeScope="True" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <UniformGrid/>
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Viewbox Margin="5" Stretch="Uniform">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="col"/>
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition SharedSizeGroup="row"/>
          </Grid.RowDefinitions>
          <TextBlock Text="{Binding Name}"/>
        </Grid>
      </Viewbox>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

public partial class Test2 : Window
{

  public Test2()
  {
    InitializeComponent();
    DataContext = new List<MyClass2>()
    {
      new MyClass2(){Name="A"},
      new MyClass2(){Name="BB"},
      new MyClass2(){Name="CCCCCCCCCCCC"},
      new MyClass2(){Name="DDD"},
      new MyClass2(){Name="EEEEEEE"}
    };
  }
}

class MyClass2
{
  public string Name { get; set; }
}