Silverlight 4 UserControl을 가져 오는 중입니다. 많은 수의 FrameworkElements가 포함 된 캔버스가 포함되어 있으며이를 데이터 바인딩을 사용하도록 변환합니다. Silverlight ContentControl에 데이터 바인딩 할 때 마우스 이벤트가 발생하지 않습니다.
내 원래 캔버스의 XAML이었다 :<Canvas x:Name="panelDisplay" >
<Rectangle Width="50" Height="50" MouseLeftButtonDown="Element_MouseLeftButtonDown" Stroke="Aqua" StrokeThickness="5" Fill="Aquamarine" Canvas.Left="450" Canvas.Top="50" x:Name="rect1" />
<Image Source="../Images/3.jpg" Stretch="UniformToFill" Width="356" Height="224" MouseLeftButtonDown="Element_MouseLeftButtonDown" Canvas.Left="317" Canvas.Top="140" x:Name="image1" />
</Canvas>
이 사각형 및 이미지 다음과 같은 드래그 및 크기 조정 등의 작업을 처리하는 MouseLeftButtonDown 이벤트가 발생을 표시합니다. ElementContent은 사각형 또는 이미지를 저장하는 데 사용됩니다
public class CanvasElement
{
public CanvasElement(int id, object elementContent, double width, double height, int left, int top)
{
Id = id;
ElementContent = elementContent;
Width = width;
Height = height;
Left = left;
Top = top;
}
public int Id { get; set; }
public object ElementContent { get; set; }
public double Width { get; set; }
public double Height { get; set; }
public int Left { get; set; }
public int Top { get; set; }
}
: 데이터 바인딩이 작업을 진행하기 위해
나는 CanvasElement라는 개체를 만들었습니다. CanvasElements라는 ObservableCollection을 채우고 컨트롤의 DataContext를 할당합니다. 나는 내 XAML을 변경 한 :
<Canvas x:Name="panelDisplay" >
<ItemsControl x:Name="CanvasElements" ItemsSource="{Binding Path=CanvasElements}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Canvas>
<ContentControl Content="{Binding Path=ElementContent}" Height="{Binding Path=Height}" Width="{Binding Path=Width}"
Canvas.Left="{Binding Path=Left}" Canvas.Top="{Binding Path=Top}"
MouseLeftButtonDown="CanvasElement_MouseLeftButtonDown" />
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
내 요소를 표시하지만 CanvasElement_MouseLeftButtonDown가 발생하지 않습니다. ItemsControl 내에서 ContentControl도 사용했습니다.
내 질문은 :
이것은 합리적인 방법인가요?
왜 MouseLeftButtonDown이 실행되지 않습니까?
안녕하세요, MouseLeftButtonDown은 ItemsControl의 데이터 템플릿 안에 정의했기 때문에 실행되지 않습니다. – Malcolm
감사합니다 말콤 - 실제로이 상황에서 이벤트 처리기를 배치해야합니까? –
이 ContentControl에 어떤 콘텐츠가 포함되어 있습니까? 마우스 이벤트가 이벤트를 발생시키는 컨텐트 컨트롤을 버블 링하지 않을 수도 있습니다. – AnthonyWJones