- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的应用程序中使用来自 MahApps.Metro 的 Flyouts。所以我将此部分添加到我的 MainWindow.xaml 中:
<controls:MetroWindow.Flyouts>
<controls:FlyoutsControl ItemsSource="{Binding Flyouts}">
<controls:FlyoutsControl.ItemTemplate>
<DataTemplate DataType="{x:Type viewModel:SettingsViewModel}">
<view:SettingsFlyout/>
</DataTemplate>
</controls:FlyoutsControl.ItemTemplate>
</controls:FlyoutsControl>
</controls:MetroWindow.Flyouts>
ItemTemplate
将包含从我的 View 模型到 View 的映射。
Flyouts
是
ObservableCollection<IFlyoutViewModel>
目前只包含我的
SettingsViewModel
.
IFlyoutViewModel
定义:
using System.ComponentModel;
namespace MyApplication.ViewModel
{
internal interface IFlyoutViewModel : INotifyPropertyChanged
{
bool Visible { get; set; }
}
}
Visible
-属性(property):
<controls:Flyout x:Class="MyApplication.View.SettingsFlyout"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
Header="Settings"
Position="Right"
IsOpen="{Binding Visible}"
Width="300">
...
</controls:Flyout>
Visible
- 我的 SettingsViewModel 的属性,但 Flyout 不会打开。我究竟做错了什么?
IsOpen="true"
硬编码,但这也不起作用。因此,使用数据模板显示弹出似乎是问题所在......
最佳答案
我按照 Eldho 链接的问题讨论中的描述构建了它,现在它可以工作了。定义ItemContainerStyle
的关键并绑定(bind)IsOpen
那里!
新MainWindow.xaml
:
<controls:MetroWindow.Flyouts>
<controls:FlyoutsControl ItemsSource="{Binding Flyouts}">
<controls:FlyoutsControl.Resources>
<view:FlyoutPositionConverter x:Key="FlyoutPositionConverter"/>
</controls:FlyoutsControl.Resources>
<controls:FlyoutsControl.ItemTemplate>
<DataTemplate DataType="{x:Type viewModel:SettingsViewModel}">
<view:SettingsFlyout/>
</DataTemplate>
</controls:FlyoutsControl.ItemTemplate>
<controls:FlyoutsControl.ItemContainerStyle>
<Style BasedOn="{StaticResource {x:Type controls:Flyout}}"
TargetType="{x:Type controls:Flyout}">
<Setter Property="Header"
Value="{Binding Header}" />
<Setter Property="IsOpen"
Value="{Binding Visible}" />
<Setter Property="Position"
Value="{Binding Position, Converter={StaticResource FlyoutPositionConverter}}" />
<Setter Property="IsModal"
Value="{Binding IsModal}" />
<Setter Property="Theme" Value="Accent" />
</Style>
</controls:FlyoutsControl.ItemContainerStyle>
</controls:FlyoutsControl>
</controls:MetroWindow.Flyouts>
IFlyoutViewModel
:
using System.ComponentModel;
namespace MyApplication.ViewModel
{
internal interface IFlyoutViewModel : INotifyPropertyChanged
{
string Header { get; }
bool Visible { get; set; }
Position Position { get; set; }
bool IsModal { get; set; }
}
public enum Position
{
Top,
Left,
Right,
Bottom
}
}
FlyoutPositionConverter
只是我的位置枚举和
MahApps.Metro.Controls.Position
之间的映射器因为我不想在我的 View 模型界面中使用真实的位置。
Flyout
,它可以是一个普通的用户控件。
关于c# - 带有 MVVM 的 Metro Flyout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36130858/
我有两个按钮显示 Flyouts单击时。我以与 XAML UI Basics sample 中演示的方式相同的方式显示它们: private void ButtonTapped(object send
经过大量谷歌搜索后,我一直无法找到一个干净/简单的插件来处理弹出菜单。 弹出菜单是,单击一个图标,然后下拉菜单项列表。大多数弹出菜单似乎都将点击时生成的菜单项作为 DIV。 有什么解决办法吗? 谢谢
我在 WP8.1 上遇到了一些小问题 - 这花了一些时间,但最终我设法将其本地化 - 假设我们有一个带弹出按钮的按钮:
在我的 Windows Phone 8.1 中有以下 CommandBar(我使用的是通用模板):
我在 Flyout 中使用分组的 ListView,当弹出窗口打开时,组标题出现奇怪的 UI 问题。它发生的时间只有几分之一秒,但大多数用户仍会注意到。 XAML(摘自完整的重现样本 http://g
在 amazon.com 和 walmart.com 上,当您将鼠标悬停在部门上时,会出现一个弹出功能。它的工作方式类似于菜单,但悬停时会显示一个带有完整链接列表的实际矩形窗口。 我正在尝试查找该功能
我的应用程序中有一个浮出控件,用于将其他联系人添加到本地数据库中。此弹出窗口当前被声明为页面资源,并且完全符合我的需要,但是为了在不同的页面上重新使用它,我需要将弹出窗口的 xaml 和任何附加事件复
我想访问我创建的浮出控件的所有者。 我有代码: public void dosomething(Grid lessonGrid) { var invisibleButton = new But
我是 javascript 的新手,在使用菜单时遇到了问题。我可以使用弹出菜单,也可以使用滚动菜单(滚动菜单演示 http://css-tricks.com/examples/LongDropdown
我使用 Flyouts在我的 Metro 风格应用程序中,它使用 MahApps Metro package : some content
我刚刚在 Windows 8.1 中为我的 Windows 应用商店应用程序测试了 ListView 控件。我非常喜欢 ListView 中项目的重新排序和拖动,显然我的应用程序需要在 Flyout
在按钮的单击事件中,我有几个异步方法,我希望它们在显示按钮的 Flyout 内容之前完成。是否有延迟显示 Flyout 内容的方法,或者它是否会在单击与其关联的按钮时始终显示? 最佳答案 在您的情况下
我想在我的应用程序顶部显示带有附加信息的弹出窗口,我的信息是 Listview,其中包含约 500 个项目我都尝试过: flyout 有问题 -> 它内部可能有 scrollViewer,因此我的 L
我花了很多时间来修复它。你能告诉我我做错了什么吗?我知道它与 overflow: visible 属性有关。但是我试图把它几乎放在代码的任何地方,但没有成功。也尝试使用 Firebug 。也许我无法正
我正在编写一个 Win 通用应用程序 (JS) 并实现了一个 Flyout。可通过工具栏中的按钮访问弹出窗口。弹出代码 - 弹出 div - Select Category
在我的 WPF 程序中,我使用库 MahApps.Metro .有一个按钮,按下后我想显示 Flyout控制。
我正在尝试以这种方式使用 Flyout this.DefaultViewModel["SelectedVideo"] = vi; Flyout f = new Flyout(); f.Conte
我正在构建自己的 Flyout控制列表选择以在 Windows Phone 和 Windows 桌面上使用它。不像ListPickerFlyout类,Flyout类没有显示弹出窗口的异步方法。 如何调
我在我的 UWP 应用中使用 Flyout 元素作为: 这会根据需要在应用程序的中心打开弹出窗口。但我无法更改弹出窗口的高度和宽度。如何才能做到这一点? 最佳答案 XAML 相当于已接受的答案。 (
我正在尝试在我的应用程序中使用来自 MahApps.Metro 的 Flyouts。所以我将此部分添加到我的 MainWindow.xaml 中:
我是一名优秀的程序员,十分优秀!