我在我的WPF应用程序中有一个Ellipse
,我想在它被双击时改变其轮廓的颜色。 我找到了这篇(旧)关于如何使用可用的MouseDown
事件并在事件处理程序中检查ClickCount
为2来使其工作的教程。 这是我问题的最简单解决方案,我想尝试让它先工作,而不是创建一个空的按钮控件模板。
然而,我无法在我的后台代码文件中找到被单击的椭圆形。 教程中说这个方法可以工作,但我想知道是否漏掉了什么。
这里是包含椭圆形的代码。 它是网格的第三列:
<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>
在本教程中,behind方法的代码如下所示:
private void Ellipse_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
FlowLinkEllipse.Stroke = "Red";
}
}
我看到的错误信息是:
'FlowLinkEllipse' 的名称在当前上下文中不存在
如果这种方法不可行,我愿意接受尽可能简单的建议(我还不熟悉WPF,我的应用程序将处理的唯一内容就是双击)。
注意:我已经在代码后面加了这一行,并且它可以正常工作。
FlowLinkItems.MouseLeftButtonUp += FlowLinkItems_MouseLeftButtonUp;
DataTemplate.Triggers
。 - Federico BerasateguiItemsSource
的ItemsControl
是一种可视化的数据表示形式,这些数据实际上是存储在其他地方的。数据负责保持自己的状态,UI不负责保持数据的状态,因此ItemTemplate
内部任何UI元素的所有属性都应该绑定到数据项中相关的属性,而不是通过过程性代码进行操作。 - Federico Berasategui