[英]DataBinding within a UserControl not working at design time?
我有一個關於數據綁定和用戶控件的小問題。
我構造(使用 C# 2010)一個用戶控件,它基本上是 ComboBox 的包裝器,它有一個自定義屬性,當更改時,設置 ComboBox 的值。 相反,如果 ComboBox 中的選定項發生變化,則該屬性的值也會發生變化。
現在,我可以通過在 ComboBox 上捕獲“selected value changed”事件並設置屬性來做到這一點,我可以在屬性設置器中設置 ComboBox 的選定值,但我推測我也可以做到這與數據綁定。
它幾乎有效,但不完全有效。
它在運行時有效,但在設計時無效,我想知道這是否可以輕松解決。
例如,如果在設計時,我選擇了我的用戶控件的實例,並從屬性窗口中選擇了我的控件的自定義屬性並對其進行了更改,則 ComboBox 不會反映更改。
任何指向我錯過的東西的指針都會受到極大的歡迎。 顯然,我可以設置 ComboBox selected 值,但如果 DataBinding 為我做這件事會很好。
謝謝
(這是我的用戶控件。在窗體上放置一個並使用 IDE 更改“位置”屬性)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsFormsApplication13
{
public partial class UserControl1 : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public enum enumPosition : byte
{
Unknown, First, Second, Third
}
public UserControl1()
{
InitializeComponent();
var bindingList = new BindingList<KeyValuePair<enumPosition, String>>();
foreach (enumPosition value in Enum.GetValues(typeof(enumPosition)))
{
bindingList.Add(new KeyValuePair<enumPosition, String>(value, value.ToString()));
}
this.comboBox1.DisplayMember = "Value";
this.comboBox1.ValueMember = "Key";
this.comboBox1.DataSource = bindingList;
this.comboBox1.DataBindings.Add("SelectedValue", this, "Position", false, DataSourceUpdateMode.OnPropertyChanged);
}
private enumPosition _position = enumPosition.Unknown;
[DefaultValue(typeof(enumPosition), "Unknown")]
public enumPosition Position
{
get { return _position; }
set
{
if (value != _position)
{
_position = value;
this.OnPropertyChanged(new PropertyChangedEventArgs("Position"));
}
}
}
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, e);
}
}
}
也適用於我! 環境 - VS .Net 2008
我認為唯一的區別可能是“重新構建”應用程序,而不僅僅是“構建”?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.