积极答复者
如何实现这样的绑定?

问题
答案
-
可以很简单的实现,因为WPF的数据绑定可以将任何CLR的属性作为绑定的数据源,所以我们只要创建一个Window示例,然后在他里面新建一个bool属性来表示是否打开,绑定这个属性到 ToggleButton 的IsChecked属性上,用TwoWay模式。 简单的代码示例如下:
子窗体:
public partial class TestWindow : Window, INotifyPropertyChanged { bool _IsVisibility; public bool IsVisibility { get { return _IsVisibility; } set { _IsVisibility = value; if (value) this.Show(); else this.Hide(); if (PropertyChanged != null) PropertyChanged(this,new PropertyChangedEventArgs("IsVisibility")); } } public TestWindow() { InitializeComponent(); this.Closing += new CancelEventHandler(TestWindow_Closing); } void TestWindow_Closing(object sender, CancelEventArgs e) { e.Cancel = true; IsVisibility = false; this.Hide(); } public event PropertyChangedEventHandler PropertyChanged; }
主窗体的XAML:
<ribbon:RibbonToggleButton x:Name="Button1" LargeImageSource="Images\LargeIcon.png" Label="Button1" IsChecked="{Binding IsVisibility, Mode=TwoWay}"/>
主窗体的后台代码:
public partial class MainWindow : RibbonWindow { private TestWindow win = new TestWindow(); public MainWindow() { InitializeComponent(); // Insert code required on object creation below this point. Button1.DataContext = win; } private void RibbonWindow_Closed(object sender, EventArgs e) { App.Current.Shutdown(); } }
你也可以从我的Skydrive.com上下载一个完整的例子:http://cid-51b2fdd068799d15.office.live.com/self.aspx/.Public/Samples%5E_2010/20101210%5E_BindingToSubWindow.zip
致,
Bob Bao
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Are you looking for a typical code sample? Please download All in One Code Framework !
如果有回复帮助并解决了您的问题,请点击 “标记为答复”,如果没有没有帮助,请随时点击“取消答复标记”
你在为寻找代码示例而苦恼吗?赶快来下载 All in One Code Framework 微软一站式代码框架 吧!- 已标记为答案 lehope 2010年12月11日 8:45
全部回复
-
可以很简单的实现,因为WPF的数据绑定可以将任何CLR的属性作为绑定的数据源,所以我们只要创建一个Window示例,然后在他里面新建一个bool属性来表示是否打开,绑定这个属性到 ToggleButton 的IsChecked属性上,用TwoWay模式。 简单的代码示例如下:
子窗体:
public partial class TestWindow : Window, INotifyPropertyChanged { bool _IsVisibility; public bool IsVisibility { get { return _IsVisibility; } set { _IsVisibility = value; if (value) this.Show(); else this.Hide(); if (PropertyChanged != null) PropertyChanged(this,new PropertyChangedEventArgs("IsVisibility")); } } public TestWindow() { InitializeComponent(); this.Closing += new CancelEventHandler(TestWindow_Closing); } void TestWindow_Closing(object sender, CancelEventArgs e) { e.Cancel = true; IsVisibility = false; this.Hide(); } public event PropertyChangedEventHandler PropertyChanged; }
主窗体的XAML:
<ribbon:RibbonToggleButton x:Name="Button1" LargeImageSource="Images\LargeIcon.png" Label="Button1" IsChecked="{Binding IsVisibility, Mode=TwoWay}"/>
主窗体的后台代码:
public partial class MainWindow : RibbonWindow { private TestWindow win = new TestWindow(); public MainWindow() { InitializeComponent(); // Insert code required on object creation below this point. Button1.DataContext = win; } private void RibbonWindow_Closed(object sender, EventArgs e) { App.Current.Shutdown(); } }
你也可以从我的Skydrive.com上下载一个完整的例子:http://cid-51b2fdd068799d15.office.live.com/self.aspx/.Public/Samples%5E_2010/20101210%5E_BindingToSubWindow.zip
致,
Bob Bao
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Are you looking for a typical code sample? Please download All in One Code Framework !
如果有回复帮助并解决了您的问题,请点击 “标记为答复”,如果没有没有帮助,请随时点击“取消答复标记”
你在为寻找代码示例而苦恼吗?赶快来下载 All in One Code Framework 微软一站式代码框架 吧!- 已标记为答案 lehope 2010年12月11日 8:45