据我所知,好像什么都没有联系起来。文本框不会获取值或在VM中设置值,并且单击时不会触发按钮命令。
<Page.TopAppBar>
<AppBar>
<AppBar.DataContext>
<Binding Path="AppBar" Source="{StaticResource Locator}"/>
</AppBar.DataContext>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Margin="0,0,20,0" TextAlignment="Center" Height="25" Grid.Column="0" Text="{Binding IPAddress}"></TextBox>
<TextBox Margin="0,0,20,0" TextAlignment="Center" Height="25" Grid.Column="1" Text="{Binding Port}"></TextBox>
<Button Grid.Column="2" Command="{Binding SaveCommand}">Save</Button>
</Grid>
</AppBar>
</Page.TopAppBar>
<Page.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"/>
</Page.DataContext>
答案 0 :(得分:0)
您是否尝试过调试eventhandler AppBar.DataContextChanged? app bar的datacontext最初设置为正确的值,但是当新的datacontext为null时,再次执行数据上下文更改时,它会变坏。所以我建议添加一个开关,以便在显示空值时恢复到良好的datacontext。
XAML
<AppBar DataContextChanged="AppBar_DataContextChanged" ... />
C#
private object _dataContext;
private void AppBar_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
if (args.NewValue != null)
{
if (_dataContext == null)
{
_dataContext = args.NewValue;
}
}
else
{
if (_dataContext != null)
{
sender.DataContext = _dataContext;
}
}
}
如果您希望文本框更新视图模型,则绑定模式必须为TwoWay。
<TextBox Margin="0,0,20,0" TextAlignment="Center" Height="25" Grid.Column="0" Text="{Binding IPAddress, Mode=TwoWay}"></TextBox>
<TextBox Margin="0,0,20,0" TextAlignment="Center" Height="25" Grid.Column="1" Text="{Binding Port, Mode=TwoWay}"></TextBox>
答案 1 :(得分:0)
如果我没有错,Windows 8商店应用程序不支持在应用程序栏中进行绑定。