Infragistics XamDataCards WPF 컨트롤에서 마우스 오른쪽 버튼을 클릭 할 때 카드를 선택하는 방법은 무엇입니까? XamDataCards.ActiveDataItem 속성도 변경해야합니다.Infragistics XamDataCards에서 오른쪽 마우스 버튼을 클릭하여 카드 선택
/// <summary>
/// selects XamDataCards'es card on right button mouse down even
/// </summary>
public class XamDataCardsSelectCardOnRightMouseClickBehavior : Behavior<XamDataCards>
{
protected override void OnAttached()
{
AssociatedObject.PreviewMouseRightButtonDown += AssociatedObjectPreviewMouseRightButtonDown;
}
/// <summary>
/// select a card on right-click so that a context menu can be displayed
/// </summary>
/// <param name="sender">not used</param>
/// <param name="e">contians mouse position</param>
private void AssociatedObjectPreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
VisualTreeHelper.HitTest(this.AssociatedObject, t => HitTestFilterBehavior.Continue, HitTestResultFunc, new PointHitTestParameters(e.GetPosition((UIElement)sender)));
}
/// <summary>
/// WPF invokes this method to report hit test intersections to the user.
/// If a card was hit, it is set as active (or selected) card.
/// </summary>
/// <param name="result">Contains the visual object that was hit.</param>
/// <returns>Always returns Continue.</returns>
public HitTestResultBehavior HitTestResultFunc(HitTestResult result)
{
DependencyObject dobj = result.VisualHit;
if (VisualTreeHelper.GetParent(dobj).GetType() == typeof(Infragistics.Windows.DataPresenter.DataRecordPresenter))
{
DataRecordPresenter rp = (DataRecordPresenter) VisualTreeHelper.GetParent(dobj);
this.AssociatedObject.ActiveDataItem = rp.DataRecord.DataItem;
}
return HitTestResultBehavior.Continue;
}
}
를 그리고 단순히 XamDataCards 제어에 첨부 :
예,이 솔루션이 내 것보다 훨씬 낫습니다. 감사합니다. –