我想綁定文本框但它不顯示字符串。第二件事是我想定期更新名稱字符串。任何解決方案WPF簡單數據綁定
這裏是我的C#代碼:
public partial class Window1 : Window
{
public String Name = "text";
}
XAML代碼:
<Grid Name="myGrid" Height="300">
<TextBox Text="{Binding Path=Name}"/>
</Grid>
我想綁定文本框但它不顯示字符串。第二件事是我想定期更新名稱字符串。任何解決方案WPF簡單數據綁定
這裏是我的C#代碼:
public partial class Window1 : Window
{
public String Name = "text";
}
XAML代碼:
<Grid Name="myGrid" Height="300">
<TextBox Text="{Binding Path=Name}"/>
</Grid>
public partial class MainWindow : Window,INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
NotifyCahnge("Name");
}
}
private void NotifyChange(string prop)
{
if(PropertyChanged!=null)
PropertyChanged(this,new PropertyChangedEventArgs(prop));
}
public event PropertyChangedEventHandler PropertyChanged;
}
希望這將有助於
您需要定義您的Name
爲DependencyProperty
:
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(Window1));
(注意,Visual Studio的定義一個方便的片段propdp
爲此,請嘗試輸入propdp
+ TAB + TAB 。)
然後,你需要正確綁定。類似的東西:
<TextBox Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"/>
你需要delcare屬性不是字段,你在這裏挖掘的是一個字段。
public String Name {get; set;}
加上它不應該在控制文件(UI文件)中。將其移動到單獨的類並將其設置爲DataContext。
PLus作爲弗拉德指出,你需要通知用戶界面,事情的變化,簡單proprities沒有。
上dataBinding好文章:
WPF綁定與性能,不能下地幹活。您需要定義Name
的屬性,還可以設置窗口的數據上下文:
你也可以把它定義爲一個依賴屬性,如果你想支持更改通知和其他DP相關的功能或使用INotifyPropertyChanged
。我建議你閱讀更多關於WPF數據綁定here。
你可以更具體一點嗎? – hellzone
他需要從將其從字段中更改爲開始,WPF不綁定到字段屬性。 – MBen
@MBen:OP需要選擇更改,所以他需要DependencyProperty或INotifyPropertyChanged – Vlad