【发布时间】:2019-10-11 09:32:50
【问题描述】:
我希望我的 ViewModel 使用 Test() 函数遍历我的 gridView 的所有内部元素。由于某种原因,我的“gridVariable”(参见代码)返回 null。在获取和设置文本框的值时,我没有遇到任何问题。为什么 GridView 返回 null,我该如何解决?
MainViewModel.cs
public class MainViewModel : Observable, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public MainViewModel(){}
private GetGridView _myGridView = new GetGridView();
public GetGridView MyGridView
{
get { return _myGridView; }
}
public void Test()
{
var gridVariable = MyGridView.AnswersGrid;
foreach (var i in gridVariable.Items) MyText.Text += "x";
}
private GetText _myText = new GetText();
public GetText MyText
{
get { return _myText; }
set
{
_myText = value;
}
}
}
GetGridView.cs
public class GetGridView : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private GridView _grid;
public GridView AnswersGrid
{
get { return _grid; }
}
}
MainPage.xaml.cs
public MainViewModel ViewModel { get; } = new MainViewModel();
public MainPage()
{
InitializeComponent();
this.DataContext = ViewModel;
}
MainPage.xaml
<RelativePanel>
<GridView
x:Name="GridView"
ItemsSource="{Binding MyGridView.AnswersGrid, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox Text="{Binding MyText.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox/>
</GridView>
<Button RelativePanel.Below="GridView" Content="butn" Click="{x:Bind ViewModel.Test}"></Button>
</RelativePanel>
【问题讨论】: