0
我的问题访问ScaleTransform这是在ListBox从代码隐藏
我想一个ScaleTransform添加到我的画布,并试图在我看来后面的代码加入对它的代码。但是,虽然VisualStudio向我显示访问者,但当我尝试在后面的代码中使用它时会引发错误。
我的列表框看起来是这样的:
<Grid>
<cc:ListBoxNoDragSelection ItemsSource="{Binding MainModel.Rectangles}" Background="{DynamicResource BG}" SelectedItem="{Binding Selected}"
BorderThickness="0" x:Name="ListBoxNoDragSelection">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="MockupCanvas" MouseWheel="MockupCanvas_OnMouseWheel" Background="Transparent">
<Canvas.RenderTransform>
<ScaleTransform x:Name="St"/>
</Canvas.RenderTransform>
<Canvas.ContextMenu>
<ContextMenu>
<MenuItem Header="New rectangle" Command="{Binding AddNewRectangleToCollectionCommand}"/>
<MenuItem Header="Delete selected rectangle" Command="{Binding TryDeleteRectangleFromCollectionCommand}"/>
</ContextMenu>
</Canvas.ContextMenu>
</Canvas>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Left" Value="{Binding X}"/>
<Setter Property="Canvas.Top" Value="{Binding Y}"/>
<Setter Property="Canvas.ZIndex" Value="{Binding Z}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Height="Auto" Width="{Binding Width}">
<Label DockPanel.Dock="Top" Content="{Binding Name}" Foreground="{DynamicResource Foreground}" IsHitTestVisible="False"/>
<Rectangle Width="{Binding Width}" Height="{Binding Height}" DockPanel.Dock="Bottom"
Fill="Transparent" Stroke="White" StrokeThickness="3" RadiusX="10" RadiusY="10" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</cc:ListBoxNoDragSelection>
</Grid>
最重要的部分是:
<Canvas x:Name="MockupCanvas" MouseWheel="MockupCanvas_OnMouseWheel" Background="Transparent">
<Canvas.RenderTransform>
<ScaleTransform x:Name="St"/>
</Canvas.RenderTransform>
<Canvas.ContextMenu>
<ContextMenu>
<MenuItem Header="New rectangle" Command="{Binding AddNewRectangleToCollectionCommand}"/>
<MenuItem Header="Delete selected rectangle" Command="{Binding TryDeleteRectangleFromCollectionCommand}"/>
</ContextMenu>
</Canvas.ContextMenu>
</Canvas>
代码隐藏:
private void MockupCanvas_OnMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
{
St.ScaleX *= ScaleRate;
St.ScaleY *= ScaleRate;
}
else
{
St.ScaleX /= ScaleRate;
St.ScaleY /= ScaleRate;
}
}
Visual Studio中不断告诉我, St
不在当前可用的上下文中。
我在做什么错?