[英]Data Binding not working in silverlight
我正在尝试做一些简单的数据绑定。 我有一个集合,返回一个带有名为MenuName的属性的项目。 我检查了它是否正确返回。 因此,这就是我尝试进行绑定的方式。 (通过Menu继承自INotifyPropertyChanged。)
XAML
<Grid x:Name="LayoutRoot" DataContext="MenuItems">
<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Grid.Row="0" Margin="24,17,0,28">
<TextBlock Text="Test" Typography.Capitals="SmallCaps"/>
<TextBlock Text="{Binding MenuName }" Margin="0,12,0,0" FontSize="52"/>
<CheckBox>Cache</CheckBox>
</StackPanel>
</Grid>
背后的代码:
#region Members
MyAppWinConnectionClient MyAppWinService;
#endregion Members
#region Properties
public ObservableCollection<Menu> MenuItems { get; set; }
#endregion Properties
public StandardUI()
{
MyAppWinService = new MyAppWinConnectionClient();
this.InitializeComponent();
LoadTest();
}
private async void LoadTest()
{
try
{
MenuItems = await MyAppWinService.GetMenuEntriesAsync();
}
catch (FileNotFoundException ex)
{
}
}
我想我缺少明显的东西。 你怎么看?
我建议您将“ StandardUI”用作视图(或LayoutRoot)的DataContext,然后将“ MenuItems”用作StackPanel的ItemsSource。 然后,您可以根据需要向StandardUI添加许多属性,并在其他控件上使用它们。 就像mvvm模式。 ;)
如果未设置其数据上下文,则使用每个控件将使用的页面的DataContext
。 这样设置页面的数据上下文:
public StandardUI()
{
DataContext = this;
MyAppWinService = new MyAppWinConnectionClient();
this.InitializeComponent();
LoadTest();
}
然后在绑定上,提取第一个菜单项:
<Grid x:Name="LayoutRoot">
<StackPanel>
<TextBlock Text="Test" Typography.Capitals="SmallCaps"/>
<TextBlock Text="{Binding MenuItems[0].MenuName }" />
<CheckBox>Cache</CheckBox>
</StackPanel>
</Grid>
但是应该研究MVVM。 我在我的博客文章Xaml:ViewModel主页实例化和更轻松绑定的加载策略上给出了绑定,数据上下文和MVVM的简短示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.