我没有胆量说它是错误,尽管我相信它就是这样,但我解决了这个问题,这个问题让我像一个星期一样:
第一:这不只是针对BottomAppBar
,TopAppBar
遭受同样的问题。
第二:问题是ElementName
绑定仅在您的源元素是位于其中一个 AppBars 内的元素时才有效,这意味着:
- 从
BottomAppBar
(目标)到TopAppBar
(源):有效
- 从
BottomAppBar
(目标)到BottomAppBar
(源):有效
- 从
TopAppBar
(目标)到BottomAppBar
(源):有效
- 从
TopAppBar
(目标)到TopAppBar
(源):有效
- 从
TopAppBar
(目标)到two AppBars
(源)之外的东西:不起作用
- 从
BottomAppBar
(目标)到two AppBars
(源)之外的东西:不起作用
例子 :
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBox x:Name="text" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
<Page.TopAppBar>
<AppBar>
<StackPanel Orientation="Horizontal">
<Button Content="{Binding Text, ElementName=text}" Click="Button_Click_1"></Button>
<Button Content="{Binding Text, ElementName=text2}" Click="Button_Click_1"></Button>
<TextBox x:Name="text3" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBox x:Name="text3" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</AppBar>
</Page.TopAppBar>
<Page.BottomAppBar>
<AppBar>
<StackPanel Orientation="Horizontal">
<Button Content="{Binding Text, ElementName=text}" Click="Button_Click_1"></Button>
<Button Content="{Binding Text, ElementName=text3}" Click="Button_Click_1"></Button>
<TextBox x:Name="text2" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBox x:Name="text3" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</AppBar>
</Page.BottomAppBar>
两个 AppBars 中第一个按钮的内容不会显示任何内容,但是两个 AppBars 的第二个按钮将正确显示。
我发现 AppBar 从外部看到的唯一内容是DataContext
根Page
元素,因此考虑在 DataContext 中使用支持属性来处理所有这些,这对我来说很好。