【问题标题】:WPF checkbox binding don't workWPF复选框绑定不起作用
【发布时间】:2016-05-02 00:01:24
【问题描述】:

我已经用我的 xaml 代码更新了问题。问题是列表视图,它位于弹出标签下。感谢大家的帮助。

Xaml 代码

<Popup Name="black_list_seting" 
                   StaysOpen="False"
              AllowsTransparency="True"
                   Closed="emoj_closed"
    PlacementTarget ="{Binding ElementName=emj_btn}" 
    Placement="Left">
                <Border  HorizontalAlignment="Left" VerticalAlignment="Top"  BorderBrush="Black" BorderThickness="0.5">
                    <Grid x:Name="black_list_grid" Width="270" Height="238" Background="White" ScrollViewer.VerticalScrollBarVisibility="Visible"  >

                        <ListView  x:Name="black_listview" HorizontalAlignment="Left" Height="219"  Margin="10,10,0,0" VerticalAlignment="Top" Width="254" >

                            <ListView.View>

                                <GridView >

                                    <GridView.ColumnHeaderTemplate>
                                        <DataTemplate >
                                            <DockPanel Margin="-40,0,0,0">

                                                <TextBlock FontSize="12" HorizontalAlignment="Left" Foreground="#383e4b">
                                                    <TextBlock.Text>
                                                        <Binding/>
                                                    </TextBlock.Text>
                                                </TextBlock>
                                            </DockPanel>
                                        </DataTemplate>
                                    </GridView.ColumnHeaderTemplate>

                                    <GridViewColumn Header="name"
                DisplayMemberBinding="{Binding user_name}"
                Width="100"/>
                                    <GridViewColumn Header="ignore"
                Width="100">

                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <CheckBox DataContext="{Binding check_key}"  IsChecked="{Binding IsSelected}" Checked="black_list_item_fn"></CheckBox>
                                            </DataTemplate>

                                        </GridViewColumn.CellTemplate>

                                    </GridViewColumn>


                                </GridView>
                            </ListView.View>






                        </ListView>



                    </Grid>
                </Border>
            </Popup>

背后的代码

    public class contact_user_data
    {

        public string user_name { get; set; }
        public string user_key { get; set; }
        public string check_key { get; set; }
        public string head_url { get; set; }
        private bool isSelected;
        private string name;

        public bool IsSelected { get; set; }
    }

列表查看Items源定义代码

         var source = global_var.black_list_soruce[md5];
        if (source != black_listview.ItemsSource)
        {

        }
        black_listview.ItemsSource = null;
        //  black_listview.Items.Clear();
        black_listview.ItemsSource = source;

        black_list_seting.IsOpen = true;

无论我如何定义复选框绑定,它都没有被选中。

请帮帮我!!我花了三天时间研究这个问题

【问题讨论】:

  • 您将 CheckBox 的 DataContext 绑定到 check_key 属性,将 IsChecked 绑定到 IsSelected 属性!!!不清楚
  • 你好@Amine 我还需要提供任何信息以便你理解它?
  • 能否提供ListView的xaml
  • 你好@Amine我更新完成谢谢你的提示

标签: c# wpf xaml checkbox data-binding


【解决方案1】:

查看下一个表达式:

<CheckBox DataContext="{Binding check_key}"  IsChecked="{Binding IsSelected}" Checked="black_list_item_fn"></CheckBox>

我可以说绑定不起作用。请注意一个小解释:

  1. DataContext="{Binding check_key}" - 定义复选框的data context
  2. IsChecked="{Binding IsSelected}" - 表示选中/未选中状态由 DataContext 中存在的 IsSelected 属性定义。 由于 contact_user_data 类的 check_key 属性是一个字符串,而 IsSelected 不是字符串类的成员,我们有一个绑定表达式破坏了绑定过程,这里没有任何工作(复选框未绑定,因为 @ 987654322@)。
  3. 此外,您应该在此处使用INPC 进行绑定,以便即时工作。

我的建议是;尝试从您的复选框声明中删除DataContext="{Binding check_key}",然后框架将找到绑定路径并且至少在第一次定义状态(因为未实现INPC-interesting article concerning the INPC must)。

示例

<CheckBox IsChecked="{Binding IsSelected}" Checked="black_list_item_fn"/>

问候。

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多