【发布时间】:2012-09-25 11:58:28
【问题描述】:
我的主页有 appbar,它在不同的页面之间共享。我编写了以下代码,通过单击 gridview 项目打开 appbar。
XAML
<AppBar Opened="AppBar_Opened" IsOpen="{Binding IsAppBarOpen}">
后端
private void Clock_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
App.ViewModel.SelectedClock = (Clock)ThemeGridView.SelectedItem;
App.WorldViewModel.IsAppBarOpen = true;
}
private void ThemeGridView_ItemClick(object sender, ItemClickEventArgs e)
{
App.ViewModel.SelectedClock = (Clock)ThemeGridView.SelectedItem;
App.WorldViewModel.IsAppBarOpen = true;
}
世界视图模型
private bool _IsAppBarOpen;
public bool IsAppBarOpen
{
get { return _IsAppBarOpen; }
set { base.SetProperty(ref _IsAppBarOpen, value); }
}
GridView XAML
<GridView
Grid.Row="1"
Grid.Column="1"
x:Name="ThemeGridView"
ItemsSource="{Binding Clocks}"
ItemTemplate="{StaticResource WorldClockTemplate}"
SelectionChanged="Clock_SelectionChanged"
SelectionMode="None"
IsItemClickEnabled="True"
ItemClick="ThemeGridView_ItemClick"
>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
但是当我选择 gridview 项目时,appbar 没有弹出。没有绑定错误,所以真的很神秘!
【问题讨论】:
-
你能发布你的gridview和item点击事件的定义吗?
-
你可以在你的 xaml 中添加 DataContext 吗?也许你的绑定是错误的。另一方面:我认为你不应该那样做,因为不希望在 UI 中单击时打开应用栏。你想让我做什么? AppBar 将在单击右键或滑动时调用。
-
@Fixus 我已经添加了gridview的定义。而且我认为 SelectionChangedEvent 的工作方式与点击的项目相同吗?我也尝试了右键点击事件,但没有成功。
-
@Raubi 我将相同的绑定放在一个文本块上,只是为了检查绑定是否正在发生并且文本块显示的是真实值。我认为 IsOpen 属性被设置为 true 但 appbar 仍然没有打开......不知道!并且应用栏包含添加和删除等按钮,因此当我选择一个项目时,我希望应用栏立即弹出,以便用户可以删除该项目。我不希望用户每次选择项目然后右键点击......当用户选择项目时,应用栏应该会自动弹出
-
正常点击(左点击)是否有效?
标签: c# xaml windows-runtime winrt-xaml