更改属性时,C#XAML数据绑定无效
好吧,我一直在绞尽脑汁想这件事,我错过了一些东西,我只是不知道是什么。最终,我试图设置数据绑定,以便能够更新动态显示的值,但对我来说,这是行不通的 XAML是:更改属性时,C#XAML数据绑定无效,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,好吧,我一直在绞尽脑汁想这件事,我错过了一些东西,我只是不知道是什么。最终,我试图设置数据绑定,以便能够更新动态显示的值,但对我来说,这是行不通的 XAML是: <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="37" Margin="85,38,0,0" TextWrapping="Wrap" Text="{Binding Path=TBBind}" VerticalAlignment="Top"
<TextBox x:Name="textBox" HorizontalAlignment="Left"
Height="37" Margin="85,38,0,0" TextWrapping="Wrap"
Text="{Binding Path=TBBind}" VerticalAlignment="Top"
Width="121" />
帮帮我,欧比。。。。哦,等等,任何人都帮我 试试看:
public MainWindow()
{
InitializeComponent();
DataContext = this;
TBBind = "test";
}
这里的差异设置了critical
DataContext
属性。这是您在这里实现的MVVM模式的基石。您应该考虑将视图模型职责分离为另一个类,然后将视图的代码>代码DATACONTEXS/<代码>设置为该类的实例,但是您所采用的方法适用于简单的情况。 < P>假定您正在尝试使用MVVM模式(它代表模型视图View Mead):
您的主窗口是视图
您应该创建另一个类作为视图模型,如下所示:
public class MainWindowViewModel : INotifyPropertyChanged
{
public MainWindowViewModel()
{
TBBind = "test";
}
private string _tBBind;
public string TBBind
{
get { return _tBBind; }
set
{
if (value != _tBBind)
{
_tBBind = value;
OnPropertyChanged("TBBind");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string property)
{
MessageBox.Show("OnPropertyChanged triggered");
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
删除MainWindowViewModel类中所有与ViewModel相关的内容后,您的MainWindow代码将如下所示:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
现在,您应该将视图与ViewModel链接起来,有很多方法可以做到这一点。以下是其中之一:
在主窗口的XAML中,在窗口
元素中具有以下内容:
<Window.DataContext>
<wpfApplication5:MainWindowViewModel />
</Window.DataContext>
<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="37" Margin="85,38,0,0" TextWrapping="Wrap" Text="{Binding TBBind}" VerticalAlignment="Top" Width="121" />
</Grid>
请注意,
WpfApplication5
是我的WPF项目中名称空间的名称。这在你的情况下可能会有所不同。谢谢你,我知道我错过了一些愚蠢的东西!谢谢你,我最终认为codekaizen的答案是正确的,因为它是最简单的,因为任何人都有同样的问题(尽管你的答案解释得更好)。我支持你的答案,但对15个声誉的限制:sThanks codekaizen!当我有足够的代表时,我也会回来投票,哈哈。
<Window.DataContext>
<wpfApplication5:MainWindowViewModel />
</Window.DataContext>
<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="37" Margin="85,38,0,0" TextWrapping="Wrap" Text="{Binding TBBind}" VerticalAlignment="Top" Width="121" />
</Grid>