我想將一個Winform窗體的Width屬性綁定到標籤上的文本,以便標籤的文本在我做出每個鼠標移動時都會更新。目前我只在點擊某個表單上的某個元素時才更新,而不是連續更新(就像在Resize處理程序中更改文本一樣)。如何做這件事?在WPF中綁定Winform
3
A
回答
3
你可以這樣做綁定到Width屬性:
label1.DataBindings.Add(new Binding("Text", this, "Width"));
問題存在的形式不通知的屬性已更改的框架。你最簡單最好的選擇很可能只是做了香餑餑方式:
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
label1.Text = this.Width.ToString();
}
編輯:好吧,如果你真的想使用數據綁定,這裏是一個可行的辦法(但就像是達到約頭部劃傷你的耳朵):
向表單中添加一個對象數據源,並將DataSource設置爲鍵入「System.Windows.Forms.Form」。
接下來,添加一些代碼:
public Form2()
{
InitializeComponent();
this.formBindingSource.DataSource = this;
Binding binding = new Binding("Text", this.formBindingSource, "Size", true);
binding.Format += new ConvertEventHandler(binding_Format);
label1.DataBindings.Add(binding);
}
void binding_Format(object sender, ConvertEventArgs e)
{
Size size = (Size)e.Value;
e.Value = size.Width.ToString();
}
所以就像我說的,這是完整的矯枉過正,但它的工作原理。
0
你是對的,綁定到Width屬性將無法正確工作,因爲Form沒有WidthChanged事件。
您可以綁定到Size屬性,並使用格式化來格式化
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var binding = new Binding("Text", this, "Size", false, DataSourceUpdateMode.OnPropertyChanged);
binding.Format += new ConvertEventHandler(binding_Format);
label1.DataBindings.Add(binding);
}
void binding_Format(object sender, ConvertEventArgs e)
{
if (e.Value is Size)
{
e.Value = ((Size)e.Value).Width.ToString();
}
}
}
1
Resize事件是處理正確的事件。我不確定你正在尋找什麼樣的持續更新,但是如果表單改變了大小,Resize Event會觸發。我相信這還包括最小化/最大化/恢復的大小更改。這應該覆蓋對錶單大小的所有更改。
private void OnFormResize(object sender, EventArgs args)
{
Form frm = (Form) sender;
txtWidth.Text = frm.Size.Width.ToString();
}
相關問題
- 1. 綁定wpf元素主機到Winform
- 2. Winform-> WPF MVVM鍵綁定錯誤?
- 3. WPF在綁定字典中綁定
- 4. 在XAML中綁定winform控件屬性
- 5. WPF中在WinForm BindingNavigator工具
- 6. 在WPF中綁定DTO
- 7. 在WPF綁定中撤消
- 8. 在WPF中綁定圖像?
- 9. 在WPF中綁定TabItem
- 10. 在WPF中綁定到TreeView
- 11. C#在TabControl中綁定wpf
- 12. 在WPF中綁定到Transform3dGroup
- 13. 在WPF中綁定usercontrol
- 14. 綁定XAML在WPF
- 15. WinForm綁定單選按鈕
- 16. 綁定winform listview到dataTable
- 17. 使用WPF,MVVM和綁定與WinForm UserControl,如何成功集成?
- 18. 從WinForm移植到WPF,數據綁定的問題
- 19. WPF中的Winform自定義控件
- 20. WPF綁定:鑄造在綁定路徑
- 21. WPF綁定的綁定源
- 22. Winform c中的數據綁定錯誤#
- 23. 在WPF中,如何在DataGrid.RowDetailsTemplate中綁定?
- 24. 在WPF中指定數據綁定
- 25. WPF中DataGridColumnHeader DataTemplate中綁定
- 26. WPF綁定DataGrid
- 27. Wpf綁定+ DataTrigger
- 28. WPF contextmenu綁定
- 29. Radiobutton wpf綁定
- 30. WPF - MVVM綁定
是的,像這樣的數據綁定只是過度的imo。 +1 – 2011-02-17 17:34:52
綁定將無法正常工作,因爲默認數據源更新模式爲開驗證 – 2011-02-17 17:36:18