2014-03-26 48 views
3

我有一个名为MyWindow.xaml XAML文件,而这个XAML宣布为复选框..不绑定复选框中的WPF器isChecked工作

<CheckBox Name="chkView" IsChecked="{Binding Path=IsChkChecked, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Checked="chkView_Checked" Unchecked="chkView_Checked" /> 

在MyWindow.xaml.cs,

public partial class MyWindow: UserControl,INotifyPropertyChanged 
{ 
    public MyWindow() 
    { 
     InitializeComponent(); 
    } 

    private bool isChkChecked; 
    public bool IsChkChecked 
    { 
     get { return isChkChecked; } 
     set 
     { 
      isChkChecked= value; 
      OnPropertyChanged("IsChkChecked"); 
     } 
    } 
public event PropertyChangedEventHandler PropertyChanged; 
    protected void OnPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 

现在,Iam尝试从另一个类访问此属性并更改属性,但该复选框没有绑定到bool属性。

MyLib.MyWindow wnd; 
      wnd= (MyLib.MyWindow)theTabItem.Content; 
        wnd.IsChkChecked = true; 

任何意见,将不胜感激。

+1

你设置的DataContext? – Maximus

+0

试过这样吗? (App.Current.MainWindow as MyWindow).IsChecked = true; – WPFUser

回答

1

您的观点并没有绑定到IsChkChecked因为它没有住在DataContext的。通常你会声明一个ViewModel属性,并声明DataContext是这个ViewModel的一个实例。一个快速的解决将是改变视图的构造到DataContext设置为视图本身或更改绑定(如dkozl的建议):

public MyWindow() 
{ 
    InitializeComponent(); 
    this.DataContext = this; 
} 
1

如果您在默认情况下未指定其他绑定源,它将在DataContext中搜索,我看不到您将它设置在任何位置。一种方法是设置RelativeSource对结合点Window一个发布IsChkChecked财产

<CheckBox Name="chkView" IsChecked="{Binding Path=IsChkChecked, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/> 
相关问题