簡體   English   中英

為什么我的命名WPF形狀不受代碼背后的影響?

[英]Why is my Named WPF Shape Inaccesible from Code Behind?

我的WPF應用程序中有一個Ellipse 我想在雙擊時更改其輪廓的顏色。 我找到了這個 (舊)教程,通過使用可用的MouseDown事件並在事件處理程序中檢查兩個ClickCount來完成此工作。 這是我的問題最簡單的解決方案,我想在創建一個空按鈕控制模板之前嘗試讓它工作。
但是,我無法在我的代碼隱藏文件中找到單擊的橢圓。 據說這可以在教程中使用,但我想知道我是否遺漏了任何東西。
這是包含橢圓的代碼。 它是網格的第3列:

<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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM