- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ViewModel 作为数据上下文的 View (在代码中设置)。在我看来,我有一个 list
<UserControl x:Class="ZPOS.Modules.Menu.Views.DepartmentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation">
<Grid>
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF9CA48A"/>
<GradientStop Color="#FFFFFFFF" Offset="1"/>
<GradientStop Color="#FF90A85C" Offset="0.5"/>
</LinearGradientBrush>
</Grid.Background>
<ListBox ItemsSource="{Binding Departments}"
SelectionChanged="ListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.Background>
<LinearGradientBrush>
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Height="Auto" HorizontalAlignment="Left" Margin="1,1,1,1" Grid.Column="0" Grid.Row="0" Content="{Binding Path=Name}"
prism:Click.Command="{Binding displayMenubyCategory}" VerticalAlignment="Bottom" Width="Auto"/>
<TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding Path=Note}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Height="Auto" HorizontalAlignment="Left" Margin="1,1,1,1" Grid.Column="0" Grid.Row="0" Content="{Binding Path=Name}" prism:Click.Command="{Binding displayMenubyCategory}" VerticalAlignment="Bottom" Width="Auto"/>
</Grid>
</UserControl>
using System;
using System.ComponentModel;
using Microsoft.Practices.Composite.Events;
using System.Collections.Generic;
using ZPOS.Infrastructure;
using ZPOS.Objects;
using System.Collections.ObjectModel;
using ZPOS.Modules.Menu.Views;
using ZPOS.Contracts;
using Microsoft.Practices.Composite.Presentation.Commands;
namespace ZPOS.Modules.Menu.PresentationModels
{
public class DepartmentViewModel : IDepartmentViewModel, INotifyPropertyChanged
{
private readonly IEventAggregator eventAggregator;
private string _message;
IMenuService service;
public DelegateCommand<POSDepartment> displayMenubyCategory { get; private set; }
public string Name { get; set; }
private ObservableCollection<POSDepartment> deptItems;
public ObservableCollection<POSDepartment> Departments
{
get { return deptItems; }
private set
{
if (deptItems != value)
{
deptItems = value;
PropertyChanged(this, new PropertyChangedEventArgs("deptItems"));
}
}
}
public string Message
{
get { return _message; }
set
{
if (_message != value)
{
_message = value;
PropertyChanged(this, new PropertyChangedEventArgs("deptItems"));
}
}
}
public IDepartmentView View { get; private set; }
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private void NotifyPropertyChanged(string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public DepartmentViewModel(IDepartmentView deptView, IEventAggregator eventAggregator, IMenuService service)
{
this.View = deptView;
this.View.Model = this;
this.eventAggregator = eventAggregator;
this.service = service;
this.Name = "View for DepartmentModel";
this.eventAggregator.GetEvent<DepartmentSelectionChangedEvent>().Subscribe(departmentSelectionChanged);
displayMenubyCategory = new DelegateCommand<POSDepartment>(ExecuteCommand1, CanExecuteCommand1);
PopulateDepartmentItems();
}
private void ExecuteCommand1(POSDepartment commandParameter)
{
}
private bool CanExecuteCommand1(POSDepartment commandParameter)
{
return true;
}
public void departmentSelectionChanged(POSDepartment item)
{
this.Message = item.Name;
}
private void PopulateDepartmentItems()
{
try
{
List<POSDepartment> items = service.GetAllDepartments();
deptItems = new ObservableCollection<POSDepartment>(items);
}
catch (Exception ex)
{
throw ex;
}
}
}
}
最佳答案
正如 Kent 提到的,您可以使用 RelativeSource。第一次如何使用它并不总是很清楚,所以这里有一个示例供您使用。我认为这会起作用(为简洁起见,删除了一些按钮属性):
<Button prism:Click.Command="{Binding
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}, Path=DataContext.displayMenubyCategory}" />
关于.net - Prism :指挥官<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1364260/
我有一个 ViewModel 作为数据上下文的 View (在代码中设置)。在我看来,我有一个 list
请帮助我获取 node 的 commander 模块以按照我想要的方式解析参数。 我希望将文件列表上传到指定的数据库。有一个默认的数据库名称,因此用户不应该需要包含数据库参数。 我希望此命令按如下方式
我会在 Cmder 的另一个别名中使用别名。 我有一个很好的别名(第一个)到一个大命令,我会在另一个(第二个)中使用它: mergelocdist=git fetch origin --prune -
我有一个小程序,在 Midnite Commander 中查看时如下所示: /home/adrian/Imperas/mb_boot /startup.MICROBLAZE.elf
我刚开始使用 node.js 和 commander.js,所以这可能是个愚蠢的问题... 所以我正在尝试制作一个命令行工具,我需要向用户询问一些信息。我正在尝试使用 commander.js因为它看
根据 commander.js自述文件,我可以这样指定默认命令: var program = ...; program ... .command('list', 'list packages
我正在使用 commander.js 包来解析命令行参数:我想让一个标志成为非可选的,API 和测试在 git repo 中松散地提到需要制作一个标志,但我通常需要用指令来敲打我的头。 是否真的可以,
我是一名优秀的程序员,十分优秀!