2010-05-05 2 views
2

본질적으로 나는 제목이 말하길 원한다면, columnwidth가 .50이면 직사각형은 빨간색이어야하고, .75이면 황색이어야하고, 1이면 녹색이어야합니다.변경 직사각형 채우기 기둥의 ColumnWidth에 따라

DataTriggers를 사용하여이 작업을 수행 할 수 있다고 생각했지만 "개체 참조가 개체 인스턴스로 설정되지 않음"오류가 발생했습니다. 여기에 내 코드가 있는데 여기에 뭔가 빠졌습니까?

FYI 너비 속성은 timer_tick 이벤트를 통해 백엔드에서 변경됩니다.

<Grid x:Name="Grid1" Width="300" Height="30"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition x:Name="MyColumn1" Width=".50*"></ColumnDefinition> 
     <ColumnDefinition x:Name="MyColumn2" Width=".50*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Grid.Triggers> 
     <DataTrigger Binding="{Binding ElementName=MyColumn1,Path=Width}" Value=".50*"> 
      <Setter TargetName="rect" Property="Fill" Value="Red"></Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ElementName=MyColumn1,Path=Width}" Value=".75*"> 
      <Setter TargetName="rect" Property="Fill" Value="Yellow"></Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ElementName=MyColumn1,Path=Width}" Value="1"> 
      <Setter TargetName="rect" Property="Fill" Value="Green"></Setter> 
     </DataTrigger> 
    </Grid.Triggers> 
    <Rectangle x:Name="rect" Grid.Column="0" HorizontalAlignment="Stretch"></Rectangle> 
    <Rectangle Grid.Column="1" Fill="Blue"></Rectangle> 

</Grid> 

답변

5

이것은 나를 위해 일했습니다. Rectangle에 트리거를 설정하려면 Style을 사용합니다.

<Grid x:Name="Grid1" Width="300" Height="30"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition x:Name="MyColumn1" Width=".50*"></ColumnDefinition> 
     <ColumnDefinition x:Name="MyColumn2" Width=".50*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 

    <Rectangle x:Name="rect" Grid.Column="0" HorizontalAlignment="Stretch"> 
      <Rectangle.Style> 
       <Style TargetType="{x:Type Rectangle}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=MyColumn1,Path=Width}" Value=".50*"> 
          <Setter Property="Fill" Value="Red"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding ElementName=MyColumn1,Path=Width}" Value=".75*"> 
          <Setter Property="Fill" Value="Yellow"></Setter> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding ElementName=MyColumn1,Path=Width}" Value="1"> 
          <Setter Property="Fill" Value="Green"></Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Rectangle.Style> 
    </Rectangle> 
    <Rectangle Grid.Column="1" Fill="Blue"></Rectangle> 
</Grid> 
+0

감사합니다. – Coesy