2014-09-25 8 views
0

내 MainWindowView.xaml에 있습니다. 그것은 usercontrol을 포함합니다.WPF 명령 : 사용자 정의 컨트롤의 매개 변수

매개 변수를 사용하여 명령을 설정하려고합니다. 이 매개 변수는 gridControl (선택된 항목)의 선택된 행입니다.

나는 시도 두 개의 바인딩 (그들은 매개 변수를 찾을 수없는) 잘못 모두 :

<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding Path=lst1, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type uc:ucImpianti}}}" Style="{DynamicResource BtnToolBar}"/> 

<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding ElementName=lst1, Path=FocusedRow}" Style="{DynamicResource BtnToolBar}"/> 

가 어떻게이 (가)의 선택된 행을 전달하는 바인딩을 작성해야합니다을 UC의 gridControl?

내 명령 defition은 다음과 같습니다

public ICommand DeleteCommand { get; private set; } 
private void DeleteRecord(object parameter) 
{ 
    Debug.WriteLine(parameter); 
} 
[...] 
DeleteCommand = new DelegateCommand<object>(DeleteRecord, CanAlways); 
+2

당신이 당신'gridControl'의'selecteditem'과의'에 button'의'CommandParameter' 바인딩 할 수 없습니다 당신의 ViewModel와보기 바인딩의 좀 더 많은 정보를 필요 ViewModel의 속성? 또는,'GridControl'의'selecteditem'을 프라퍼티에 바인딩 할 수 있습니다. 그러면이 명령은 매개 변수를 전달하지 않고 가져옵니다. – Bolu

+0

그리고이 속성은 내 viewModel에서 어떤 유형이어야합니까? –

+1

'gridControl'에서 어떤 타입을 사용합니까? – Bolu

답변

1

그것은 데이터에 WPF에서 관례가 ItemsSource 속성에 특정 유형의 수집 및 SelectedItem 속성에 컬렉션 객체의 type의 속성을 (바인딩 이와

<ListBox ItemsSource="{Binding YourCollection}" 
    SelectedItem="{Binding YourSelectedItem}" ... /> 

이 설정은 데이터가 CommandParameter 소품에서 YourSelectedItem 속성에 직접 바인딩 할 수 있습니다 : 그것은이 예는 ListBox를 사용하는 차이)를하지 않습니다 당신은 싶어 액세스 UserControl을에서 개체/속성은 다음 UserControl을가 종속성 속성을 가진 객체/속성을 노출하는 경우는

당신은 바인딩 할 수 있습니다 : erty는 :

<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding YourSelectedItem}" 
    Style="{DynamicResource BtnToolBar}" /> 
+1

을 사용하십시오. YourSelectedItem 속성이 설정되어 있기 때문에 코드에서 모든 속성이 동일한 viewmodel 내에 있다고 가정하면 CommandParameter가 필요하지 않습니다. – blindmeis

+0

그건 사실입니다 ... 저는 저자가 공유 한 정보가 무엇이든 간다. – Sheridan

0

보다 일반적인 대답은 것 이 DP.

다른 방법은 UserControl의 DataContext가 속성을 노출 한 다음 usercontrol의 Datacontext.Property에 바인딩하는지 확인하는 것입니다.

은 그래서 당신의 경우에 내가