TextBlock 컨트롤이 포함 된 여러 테두리가 포함 된 사용자 정의 컨트롤이 있습니다. TextBlocks의 Text 속성은 내 ViewModel 객체의 데이터로 설정됩니다.명령과 메뉴
나는 UserControl을의 리소스에 대한 컨텍스트 메뉴의 몇 가지를 추가했습니다 : 내 TextBlocks에 상황에 맞는 메뉴에 대한 참조를 추가 한
<UserControl.Resources>
<ContextMenu x:Key="ContextMenu">
<MenuItem Header="Copy Plate" Command="cs:CarSystemCommands.CopyPlateCommand" />
<MenuItem Header="Search Plate" Command="cs:CarSystemCommands.SearchPlateCommand" />
</ContextMenu>
<ContextMenu x:Key="TextBoxContextMenu">
<MenuItem Header="_Copy" Command="Copy" />
<MenuItem Header="Copy Plate" Command="cs:CarSystemCommands.CopyPlateCommand" />
<MenuItem Header="Search Plate" Command="cs:CarSystemCommands.SearchPlateCommand" />
</ContextMenu>
</UserControl.Resources>
.
<UserControl.CommandBindings>
<CommandBinding Command="Copy" CanExecute="CopyCommand_CanExecute" Executed="CopyCommand_Executed" />
<CommandBinding Command="cs:CarSystemCommands.CopyPlateCommand" CanExecute="CopyCommand_CanExecute" Executed="CopyPlateCommand_Executed" />
</UserControl.CommandBindings>
내가 지금까지이 모든 것을 두 가지 문제점이 있습니다 : 해당 UserControl에
<Border Background="#FFFFFF78"
BorderBrush="Black"
BorderThickness="2"
ContextMenu="{StaticResource TextBoxContextMenu}"
Grid.Column="0"
Margin="5,10,5,5">
<TextBlock FontSize="18"
FontWeight="Bold"
HorizontalAlignment="Center"
Margin="5"
x:Name="Camera"
VerticalAlignment="Center" />
</Border>
마지막으로 추가 한 CommbandBindings 예를 들면 다음과 같습니다이다
I를 마우스 오른쪽 컨트롤을 클릭하면 메뉴가 표시되지만 선택 항목은 회색으로 표시됩니다. CopyCommand_CanExecute, CopyCommand_Executed 및 CopyPlateCommand_Executed 메서드의 시작 부분에 중단 점이 있습니다. 이 중단 점은 지금까지 단 한번의 실행으로 충돌했습니다. 왜 그들이 그 시간에 맞았는지는 알 수 없습니다. 매번 CanExecute 메서드가 호출되도록하려면 어떻게해야합니까?
중단 점에 도달 한 번에 인수의 원본 속성이 내가 생각했던 컨트롤이 아니 었습니다. 그것은 UserControl입니다. UserControl에서 TextBlock 중 어떤 이벤트가 발생했는지 알아야합니다. 어떻게해야합니까?
토니
편집 :
이UserControl을도 ComboBox 컨트롤이 포함되어 있습니다. ComboBox를 드롭 다운 한 후 TextBlocks를 마우스 오른쪽 버튼으로 클릭하면 CanExecute 메서드가 실행된다는 것을 알았습니다. 콤보 박스에서 아무 것도 선택하지 않아도됩니다. 클릭 만하면됩니다.
ComboBox에서 내 코드가 수행하지 않을 수있는 아이디어가 있습니까?
다른 것은 ComboBox를 삭제 한 후 Execute 이벤트 인수의 OriginalSource가 ComboBox입니다. 여러 개의 TextBlock에 동일한 Copy 명령을 사용하고 싶습니다. 어떤 TextBlock의 텍스트를 클립 보드에 복사할지 알 수 있도록 어떤 Context Menu를 사용했는지 알아야합니다. 도움!