好吧,我一直在为这个问题扯掉我的大脑,我错过了一些东西,我只是弄清楚是什么。最终我正在尝试设置数据绑定,以便我可以更新值,以便在运行中显示,但对于我的生活,它不起作用。
XAML是:
<TextBox x:Name="textBox" HorizontalAlignment="Left"
Height="37" Margin="85,38,0,0" TextWrapping="Wrap"
Text="{Binding Path=TBBind}" VerticalAlignment="Top"
Width="121" />
请注意,我设置了{Binding Path=TBBind}
。
背后的代码是:
using System.ComponentModel;
using System.Windows;
namespace Databinding_Practice_2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
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));
}
}
}
}
请帮助我......哦等等,帮助我任何人!
答案 0 :(得分:2)
假设您正在尝试使用MVVM模式(代表Model-View-ViewModel):
您的MainWindow是视图。
您应该创建另一个类作为视图模型,如下所示:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
在将所有ViewModel相关内容移除到MainWindowViewModel类之后,您的MainWindow代码将变为这样:
Window
现在,您应该将View与ViewModel链接,有很多方法可以做到这一点。这是其中之一:
在MainWindow的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
请注意{{1}}是我的WPF项目中命名空间的名称。在您的情况下,这可能会有所不同。
答案 1 :(得分:1)
尝试:
DataContext
此处的区别设置了关键DataContext
属性。这是MVVM模式的基石,您将在此处实现。您应该考虑将View Model责任分离到另一个类,然后将View的if (typeof videojs != 'undefined' ) {
videojs("my_player").ready(function () {
my_player.on("loadedmetadata",function(){
...
my_player.play();
}
}
}
设置为该类的实例,但您在此处采用的方法适用于简单的情况。