2009-05-13 2 views
0

ButtonDataTrigger을 적용하려고하고 있으며 현재 선택된 항목의 속성 (TreeView)에 따라 다릅니다. 아이디어는 선택한 항목의 속성에 따라 Button의 텍스트를 변경하려고합니다.다른 컨트롤에서 바인딩을 가져 오는 버튼에 DataTrigger 적용?

<Button x:Name="m_AddObject" Margin="192.708,0.909,6,6.363" Click="AddObject_Click" > 
    <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Removable}" Value="true"> 
     <Setter TargetName="m_AddObject" Property="Content" Value="Remove" /> 
    </DataTrigger> 
</Button> 

그러나 나는 그것을 컴파일 할 수 없습니다

는 내가 가지고있는 것은 다음과 같습니다. Setter는 "Content"가 유효한 유형 이름이 없기 때문에 유효하지 않다고 불만하지만 "Button.Content"로 변경하면 "객체 참조가 객체의 인스턴스로 설정되지 않았습니다"라는 오류가 발생합니다.

는 또한 시도 : 그 컴파일하는 동안

<Setter TargetName="m_AddObject.Content" Value="Remove" /> 

, 그것 중 하나가 작동하지 않았다.

내가 곤혹 스럽다.

아이디어가 있으십니까?

감사합니다.

답변

1

DataTriggers는 단추의 스타일에 정의해야합니다. 위에서 뭘하려는 건지 본질적으로 DataTriggers를 ("OK"대신에) 버튼에 대한 "레이블"("Content", WPF에서와 같이)로 사용합니다.

당신이 원하는이 임시이므로 완전히 정확하지 않을 수도 있지만이 가까이있다 :

<Button x:Name="m_AddObject" 
     Margin="192.708,0.909,6,6.363" 
     Click="AddObject_Click"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Removable}" Value="True"> 
        <Setter Property="Content" Value="Remove" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
관련 문제