2012-02-20 12 views
0

ViewModelにクラスPersonの配列があり、その名前を表に表示したいとします。私はチェックボックス付きの列も持っています。これは私のビューの一部です:DataTriggerが起動しない

<Grid> 
    <Grid.Resources> 
     <Style x:Key="CheckBoxStyle" TargetType="{x:Type Control}"> 
      <Setter Property="Visibility" Value="Visible"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsSelectionAllowed}" Value="False"> 
        <Setter Property="Visibility" Value="Hidden"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 
    <ListView ItemsSource="{Binding Persons}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="40"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Style="{StaticResource CheckBoxStyle}" 
               ......................... 
               .... some logic here .... 
               ......................./> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Width="140" 
          Header="Number" 
          DisplayMemberBinding="{Binding Path=Name}" /> 
     </GridView> 
    </ListView.View> 
    </ListView> 
</Grid> 

私はIsSelectionAllowedブール変数の値に応じて/非表示のチェックボックスを表示したいです。 DataTriggerが起動しない理由

+0

コードは正常です。ビュー/グリッドのデータコンテキストを正しく設定していますか?バインディングエラーの出力ウィンドウを参照 –

+0

はい。データコンテキストが設定されます(Personsバインディングは正常に動作します)。 – shtkuh

+0

IsSelectionAllowedはビューモデルまたはPerson型のプロパティですか? – Phil

答えて

1

IsSelectionAllowedはデータコンテキストに設定されたビューモデルのプロパティであると仮定すると、あなたはバインディング相対ソースが必要になります - うまくいけば、これは任意のテストを行わずに正しいです:IsSelectionAllowedの

<DataTrigger Binding="{Binding Path=IsSelectionAllowed, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}" Value="False"> 
    <Setter Property="Visibility" Value="Hidden"/> 
</DataTrigger> 

結合あなたのコード内れますPerson型に変換します。

関連する問題