2017-12-12 16 views
0

다른 컨트롤에서 스타일 트리거를 사용할 수 있습니까?상위 컨트롤에서 스타일 트리거

나는 눈금의 각 행의 표시기 부분에있는 Border 컨트롤을 가지고 있습니다 (지시등은 작은 화살표가있는 왼쪽 끝에있는 부분입니다). 행이 선택되었는지에 따라 배경을 설정하려고합니다. 그래서 스타일을 만들었습니다 :

<controls:SelectionConverter x:Key="SelectionConverter" /> 
<Style x:Key="SelectionStyle" TargetType="Border"> 
    <Setter Property="Background" Value="{Binding Converter={StaticResource SelectionConverter}}"/> 
    <Style.Triggers> 
    <!-- here I want to have a trigger which reacts on a property of the grid control --> 
    </Style.Triggers> 
</Style> 

테두리 컨트롤은 스타일을 사용합니다 (사실 3 개의 테두리 컨트롤이 있습니다).

SelectionConverter은 제대로 작동하는 행에 따라 올바른 색상을 반환합니다.

문제는 내가 다른 셀을 선택할 때 배경이 업데이트되지 않는다는 것입니다 (이는 업데이트 할 때 트리거가 없기 때문에 의미가 있습니다).

상위 컨트롤의 트리거를 설정할 수 있습니까? 혼자

뭔가 라인

<Trigger Property="ParentControl.SelectionHasChanged" Value="True"></Trigger> 

답변

0

당신은 이것을 달성하기 위해 BindingElementName을 사용할 수 있어야합니다. 이 true 경우 예를 들어, 다음은 GridIsEnabled 속성에 바인딩과 빨간색으로 BorderBackground 속성을 설정

<Grid x:Name"main_grid"> 
    ... 
    <controls:SelectionConverter x:Key="SelectionConverter" /> 
    <Style x:Key="SelectionStyle" TargetType="Border"> 
     <Setter Property="Background" Value="{Binding Converter={StaticResource SelectionConverter}}"/> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsEnabled, ElementName=main_grid}" Value="True"> 
       <Setter Property="Background" Value="Red" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    ... 
</Grid> 
+0

가 내가 찾던 당신을 감사합니다! – derape

+0

또한 데이터 그리드 이벤트를 그리드에 입력 할 수 있습니까? 내가 아는 한 이벤트 트리거에만 애니메이션을 할당 할 수 있습니다!? – derape

+0

여기에 'DataTrigger'내에 애니메이션을 포함시키는 예가 있습니다 : https://stackoverflow.com/questions/80388/wpf-data-triggers-and-story-boards. 그게 도움이 되니? –