你能绑定到这样的局部变量吗?
SystemDataBase.cs
namespace WebWalker
{
public partial class SystemDataBase : Window
{
private string text = "testing";
...
SystemDataBase.xaml
<TextBox
Name="stbSQLConnectionString"
Text="{SystemDataBase.text}">
</TextBox>
...
文本设置为局部变量“text”
答案 0 :(得分:35)
模式是:
public string Text {get;set;}
,绑定是
{Binding Text, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}
如果希望绑定自动更新,则应将其设为DependencyProperty。
我认为3.5为绑定添加了ElementName
,因此以下内容更容易:
<Window x:Name="Derp" ...
<TextBlock Text="{Binding Text, ElementName=Derp}"/>
答案 1 :(得分:24)
要绑定到本地“变量”,变量应为:
示例:
public MyClass : INotifyPropertyChanged
{
private void PropertyType myField;
public PropertyType MyProperty
{
get
{
return this.myField;
}
set
{
if (value != this.myField)
{
this.myField = value;
NotifyPropertyChanged("MyProperty");
}
}
}
protected void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
public MyClass : DependencyObject
{
public PropertyType MyProperty
{
get
{
return (PropertyType)GetValue("MyProperty");
}
set
{
SetValue("MyProperty", value);
}
}
// Look up DependencyProperty in MSDN for details
public static DependencyProperty MyPropertyProperty = DependencyProperty.Register( ... );
}
答案 2 :(得分:15)
如果您正在做很多这样的事情,可以考虑将整个窗口的DataContext绑定到您的类。这将默认继承,但仍可以像往常一样被覆盖
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
然后,对于单个组件,您可以使用
Text="{Binding Text}"
答案 3 :(得分:1)
要绑定Window类中存在的局部变量,它必须是: 1.公共财产 2.通知财产。为此,您的窗口类应该为此属性实现INotifyPropertyChanged接口。
然后在构造函数
中public Assgn5()
{
InitializeComponent();
this.DataContext = this; // or **stbSQLConnectionString**.DataContext = this;
}
<TextBox
Name="stbSQLConnectionString"
Text="{Binding text}">
</TextBox>
答案 4 :(得分:0)
不,它必须是一个可见的财产。