我已使用我的xaml代码更新了问题。问题是listview,它位于弹出标签下。感谢大家的帮助。
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; }
}
列表视图Itemssource定义代码
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;
无论我如何定义复选框绑定,都已取消选中。
请帮帮我!!我花了三天时间研究这个问题
答案 0 :(得分:1)
查看下一个表达式:
<CheckBox DataContext="{Binding check_key}" IsChecked="{Binding IsSelected}" Checked="black_list_item_fn"></CheckBox>
我可以说你的约束无法奏效。请注意一个小的解释:
DataContext="{Binding check_key}"
- 定义复选框的data context。IsChecked="{Binding IsSelected}"
- 表示已检查/未检查状态由DataContext中存在的IsSelected属性定义。
由于contact_user_data类的check_key属性是一个字符串而且IsSelected不是字符串类的成员,因此我们有一个绑定表达式来破坏绑定过程,这里没有任何工作(复选框没有被绑定,因为binding expression)。我的建议是;尝试从复选框声明中删除DataContext="{Binding check_key}"
,然后框架将找到绑定路径,并且将至少在第一次定义状态(因为INPC未实现 - interesting article concerning the INPC must)。
示例强>
<CheckBox IsChecked="{Binding IsSelected}" Checked="black_list_item_fn"/>
问候。