2013-12-23 4 views
2

WPF를 처음 사용하고 컨텍스트 메뉴를 뷰 모델의 컨텍스트 메뉴 항목이있는 단추에 바인딩하려고합니다.컨텍스트 메뉴가있는 WPF 단추

<Button x:Name="btn" Content="Context Menu"> 
    <Button.ContextMenu> 
    <ContextMenu x:Name="cm" ItemsSource="ItemsList"/> 
    </Button.ContextMenu> 
</Button> 

private List<string> itemsList = null; 
public List<string> ItemsList 
{ 
    get 
    { 
    if(itemsList == null) 
     itemsList = new List<string>(myStringArrayOfItems); 
    return itemsList;     
    } 
} 

XAML 편집기를 사용하여 오류를 보여주는 유지 :

이것은 내가 뭐하는 거지입니다 "는 IEnumerable"에 대한 TypeConverter를 문자열로 변환을 지원하지 않습니다.

내가 뭘 잘못하고 있니?

또한이 방법을 사용한다고 가정하면이 항목을 명령에 바인딩하고 항목을 클릭 할 때 어떤 작업을 수행합니까? 모든 메뉴 항목에 대해 동일한 명령을 실행하고 항목 문자열을 매개 변수로 사용하려고합니다.

+0

여기에 대한 아이디어가 있으십니까? – Padmaja

답변

6

ItemsSource="ItemsList"을 수행하는 경우 ItemsList에 바인딩하지 않고 ItemsList 문자열로 설정합니다. 따라서 오류가 발생합니다. ItemContainerStyle에서처럼 결박 당신을 당신이 ICommand 인터페이스의 일부 구현해야하는 Command 부분으로

<ContextMenu x:Name="cm" ItemsSource="{Binding Path=ItemsList}"/> 

(here를 등) : : 시도 그래서처럼 바인딩

<ContextMenu ...> 
    <ContextMenu.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
     <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=PlacemantTarget.DataContext.ItemChanged }"/> 
     <Setter Property="CommandParameter" Value="{Binding}"/> 
     </Style> 
    </ContextMenu.ItemContainerStyle> 
</ContextMenu > 
+0

감사합니다. dkozl. 지금 데이터를 얻을 수 있습니다. 그러나 어떤 이유로 XAML은 "명령"은 설정할 수있는 속성이 아니라고 계속 말합니다. 나는 바보 같은 짓을하고있는 것 같지만 무엇을 확신하지 못한다. – Padmaja

+0

'