我的Ellipse
WPF应用程序中有一个。我想在双击时更改其轮廓的颜色。我找到了这个(旧的)教程,它通过使用可用MouseDown
事件并ClickCount
在事件处理程序中检查两个中的a来使该工作正常进行。这是解决我的问题的最简单的方法,在创建一个空按钮的Control Template之前,我想尝试使其工作。
但是,我在文件后面的代码中找不到单击的椭圆。本来可以在本教程中使用,但我想知道是否丢失了任何内容。
这是包含椭圆的代码。它是网格的第三列:
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="3">
<StackPanel Orientation="Vertical" Margin="3,1" Background="GhostWhite">
<ItemsControl Name="FlowLinkItems" ItemsSource="{Binding FlowLinkList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Height="40">
<Ellipse Name="FlowLinkEllipse" Stroke="BlueViolet" Height="38" VerticalAlignment="Center" MouseDown="Ellipse_MouseDown"/>
<TextBlock TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Message}"></TextBlock>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ScrollViewer>
在本教程中,方法的代码如下所示:
private void Ellipse_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
FlowLinkEllipse.Stroke = "Red";
}
}
我看到的错误是:
名称“ FlowLinkEllipse”在当前上下文中不存在
如果无法使用此方法,则我会接受尽可能简单的建议(我对WPF还是陌生的,我的应用程序只能处理此双击)。
注意:我的代码中确实包含此行,并且可以正常工作。
FlowLinkItems.MouseLeftButtonUp += FlowLinkItems_MouseLeftButtonUp;
正如@Magus指出的那样,您不能从代码隐藏中引用项目,它位于内DataTemplate
。不过,这应该没问题:sender
它将包含对椭圆的引用:
private void Ellipse_MouseDown(object sender, MouseButtonEventArgs e)
{
if (ellipse as sender == null || e.ClickCount < 2)
return;
var ellipse = (Ellipse)sender;
ellipse.Stroke = System.Windows.Media.Brushes.Red;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句