我被困在这里太久了,我只需要有人向我展示方向......
问题是我试图使用MVVM模式开发,我似乎不知道如何从方法传输一些数据并将其绑定到我的XAML。此外,我在所有这些结构中设置接口(INotifyPropertyChanged)时遇到问题。你们中的任何人都可以展示它必须在哪里实施吗?
我会尝试解释我的代码......
我有一个DataModel,例如它将是一个从网上获取一些数据的API:
public class DataModel
{
public string apiResult = "null";
private void GetDataFromApi()
{
// Some web service
apiResult = "SOME RESULT FROM WEB API";
}
}
现在我有一个逻辑的ViewModel:
public class ViewModel
{
private DataModel dm = new DataModel();
public string ApiResult
{
get { return dm.apiResult; }
set { dm.apiResult = value; }
}
public void GetApi()
{
dm.GetDataFromApi();
}
}
最后的观点:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPFexample" x:Class="WPFexample.MainWindow"
DataContext="{Binding ''}"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock HorizontalAlignment="Left"
Margin="110,126,0,0"
TextWrapping="Wrap"
Text="{Binding ApiResult}"
VerticalAlignment="Top"
RenderTransformOrigin="0.296,-1.239">
<TextBlock.DataContext>
<local:ViewModel/>
</TextBlock.DataContext>
</TextBlock>
</Grid>
</Window>
其实我不知道如何实现这个作为我的&#34; apiResult&#34;始终是初始值&#34; null&#34;,我希望它从METHOD GetDataFromApi
获得结果如何在MVVM中实现所有这些功能,并实现一些接口。
我已经查看了各种教程,但似乎无法掌握它,因为它们从一开始就缺少一些东西,或者我不太了解逻辑......
还将此推送到GIT:https://github.com/lklancir/WPFexample/tree/master/WPFexample/WPFexample
希望你能指出我正确的方向......
答案 0 :(得分:1)
如果实际调用GetDataFromApi,它对我有用。将此代码添加到DataModel.cs,gui显示&#34;一些来自WEB API的结果&#34;
public DataModel()
{
Task.Factory.StartNew( () => this.GetDataFromApi() );
}
但这是一个时间问题。如果向任务添加休眠,它将不再起作用,因为没有任何内容传播属性的更改。您应该实现INotifyPropertyChanged或使用DependencyProperties。