我正在尝试将 BottomAppBar 内部的元素绑定(bind)到它外部的元素。
这里有一个示例 XAML 来说明:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBox x:Name="text" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
<Page.BottomAppBar>
<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="text2" MinWidth="200" MinHeight="40" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</AppBar>
</Page.BottomAppBar>
第一个按钮永远不会更新(它绑定(bind)到的文本框在BottomAppBar 之外),但是,第二个按钮会按照您的预期更新。如何使页面对 BottomAppBar 可见?
最佳答案
我没有胆量说它是错误,尽管我相信它是这样,但我解决了这个问题,它使我像一个星期一样滑行:
首先: 这不仅仅是 BottomAppBar
, TopAppBar
也有同样的问题。
第二个: 问题是 ElementName
绑定(bind)仅在您的源 Element 是 AppBars 内的一个 Element 时才起作用,这意味着:
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>
两个 AppBar 中第一个按钮的内容不会显示任何内容,但是两个 AppBar 中的第二个按钮将正确显示。
我发现 AppBar 从外部看到的唯一东西是根
DataContext
元素的 Page
,因此考虑使用 DataContext 中的支持属性来处理所有这些,这对我来说很好用。关于windows-8 - 数据绑定(bind)到 Page.BottomAppBar 中的 ElementName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12772907/