2009-08-19 3 views
3

TreeViewHierarchicalDataTemplate (아래 참조)이 있고 데이터 집합의 데이터 관계에 바인딩되어 있습니다. 부모 노드는 부모 파트를 나타내며 자식 노드는 부모 노드를 구성하는 파트를 나타냅니다. 경우에 따라 사용자는 부모 레벨의 확인란을 선택하여 전체 부품을 모든 하위 부품으로 교체하고 있음을 나타냅니다. 이 시점에서 부모를위한 새 부품 번호를 입력 할 수있는 텍스트 상자가 나타납니다. 지금까지 나는 그 일을했습니다.HierarchicalDataTemplate.Triggers를 사용하여 ItemTemplate의 컨트롤에 영향을 미침

내가 도움이 필요한 것은 부모 확인란이 선택되었을 때 자녀를 숨기는 것입니다. 트리거 경로에서이 접근하고 있었지만, HierarchicalDataTemplate.Triggers의 트리거에서 ItemTemplate의 컨트롤에 대한 참조를 만들 수없는 것 같습니다. 아마 그것은 가능하지 않습니까?

<HierarchicalDataTemplate ItemsSource="{Binding MyParts}"> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Text="{Binding Description}" /> 
     <CheckBox x:Name="MyCheckBox" IsChecked="{Binding ReplaceParent}"></CheckBox> 
     <TextBox x:Name="NewParentPartNumberTextBox" Text="{Binding NewPartNumber}" Visibility="Collapsed"></TextBox> 
    </StackPanel> 
    <HierarchicalDataTemplate.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding ChildPartNumber}" /> 
       <TextBox Text="{Binding NewChildPartNumber}" /> 
      </StackPanel> 
     </DataTemplate> 
    </HierarchicalDataTemplate.ItemTemplate> 
    <HierarchicalDataTemplate.Triggers> 
     <Trigger SourceName="MyCheckBox" Property="IsChecked" Value="True"> 
      <Setter TargetName="NewParentPartNumberTextBox" Property="Visibility" Value="Visible"/> 
     </Trigger> 
    </HierarchicalDataTemplate.Triggers> 
</HierarchicalDataTemplate> 

답변

0

이것은 XAML 전용 접근 방식은 아니지만, 사용자의 필요에 맞게 수 있습니다

이 당신의 ViewModel/클래스 즉-입니다 바인딩 - 투 - 당신의 부모 항목 말은 다음과 같다 :

public class ItemViewModel 
{ 
    public bool ReplaceParent {get; set;} 
    public ObservableCollection<ItemViewModel> MyParts {get; set;} 
} 

당신 같은 시도 할 수 :

기본적으로
public class ItemViewModel 
{ 
    private bool _replaceParent; 
    private ObservableCollection<ItemViewModel> _originalParts = ....; 
    public bool ReplaceParent 
    { 
     get { return _replaceParent; } 
     set 
     { 
      MyParts = value ? 
         new ObservableCollection<ItemViewModel>() : 
         _originalParts; 
      // omit: any property changed logic  
     } 
    } 
    public ObservableCollection<ItemViewModel> MyParts {get; set;} 
} 

, 자상 확인란을 선택하는 동안 빈 목록이있는 children 컬렉션을 엽니 다.

관련 문제