2016-09-12 145 views
0

我有一個ListView其中每個項目是CheckBox其次是Name屬性。綁定CheckBox IsChecked值屬性

<ListView Name="ShapesList" 
      SelectionChanged="ShapesList_OnSelectionChanged" 
      Grid.Row="2" Grid.Column="0" 
      ItemsSource="{Binding ChartViewModel.OidList}" 
      Margin="15,0,10,10" 
      SelectionMode="Multiple"> 
    <ListView.View> 
     <GridView> 
      <GridView.Columns> 
       <GridViewColumn> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <CheckBox Style="{DynamicResource BigCheckbox}" 
             IsChecked="{Binding Path=IsSelected3, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Mode=TwoWay}" 
             Content="{Binding Path=Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}" 
             Checked="RoiChecked" Unchecked="RoiUnchecked"/> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn Header="ROI" DisplayMemberBinding="{Binding Name}" /> 
      </GridView.Columns> 
     </GridView> 
    </ListView.View> 

哪裏IsSelected3是繼承INotifyPropertyChanged一類的屬性。

public bool IsSelected3 
{ 
    get { return _isSelected3; } 
    set 
    { 
     _isSelected3 = value; 
     FirePropertyChanged("IsSelected3"); 
    } 
    } 

問題是IsChecked綁定不起作用,而是使用Name的那個。

你有什麼想法嗎? 謝謝!

+0

它屬於哪一類?如果它是ChartViewModel.OldList中包含的東西的屬性,只需使用'IsChecked =「{Binding IsSelected3}」'。你的名字綁定工作嗎? –

回答

0

多虧了凱爾給出的想法,我找到了解決辦法:

IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=DataContext.IsChecked, Mode=TwoWay}" 

如果x:TypeListViewItem它的工作原理。

感謝您的幫助!

0

兩個變化:

Path=DataContext.IsSelected3 
x:Type ListView 

器isChecked現在約束力的樣子:

IsChecked="{Binding Path=DataContext.IsSelected3, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}, Mode=TwoWay}" 
+0

謝謝凱爾,但不幸的是它仍然無法正常工作。 –

相關問題