【问题标题】:Binding CheckBox IsChecked value to a Property将 CheckBox IsChecked 值绑定到属性
【发布时间】:2016-09-12 22:48:53
【问题描述】:

我有一个ListView,其中每个项目都是CheckBox,后跟Nameproperty。

  <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 的绑定不起作用。

你有什么想法吗? 谢谢!

【问题讨论】:

  • 它属于哪个类?如果它是 ChartViewModel.OldList 中包含的事物的属性,则使用 IsChecked="{Binding IsSelected3}"。您的Name 绑定有效吗?

标签: wpf xaml checkbox binding


【解决方案1】:

感谢凯尔给出的想法,我找到了解决方案:

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

如果x:TypeListViewItem 它可以工作。

感谢您的帮助!

【讨论】:

    【解决方案2】:

    两个变化:

    Path=DataContext.IsSelected3
    x:Type ListView
    

    IsChecked 绑定现在看起来像:

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

    【讨论】:

    • 感谢凯尔,但不幸的是它仍然不起作用。
    猜你喜欢
    • 2015-07-24
    • 2016-04-26
    • 2012-11-15
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多