- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个Silverlight树 View ,该树 View 动态填充有treeviewitems(代表 View )。我的工作正常,但是当我单击Treeviewitem时说“ View 2.01”时,我希望能够获得ItemId(用于View 2.01)并在ViewSwitchingRegion中显示View 2.01,或者只是通过ItemId查看开关。
这就是我所做的。我想念什么?
<UserControl.Resources>
<sdk:HierarchicalDataTemplate x:Key="childNodeDataTemplate"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=Header}"/>
</sdk:HierarchicalDataTemplate>
</UserControl.Resources>
<sdk:TreeView Name="DataTreeView"
ItemsSource="{Binding DataItems}"
ItemTemplate="{StaticResource childNodeDataTemplate}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding Path=ShowViewCommand}"
CommandParameter="{Binding ElementName=DataTreeView}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding Path=ShowViewCommand}"
CommandParameter="{Binding ElementName=DataTreeView}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</sdk:TreeView>
</UserControl>
public class DataViewModel : ViewModelBase
{
#region Fields
private readonly IRegionManager _regionManager;
...
#endregion
#region .Ctors
public DataViewModel()
{
//IRegionManager regionManager, ...
_regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
//SomeMethodToLoadDataItems();
}
#endregion
#region Methods
ObservableCollection<DataItem> _dataItems;
public ObservableCollection<DataItem> DataItems
{
get { return _dataItems; }
set
{
if (_dataItems != value)
{
_dataItems = value;
RaisePropertyChanged("DataItems");
}
}
}
RelayCommand _showViewCommand;
public ICommand ShowViewCommand
{
get
{
if (_showViewCommand == null)
{
_showViewCommand = new RelayCommand
(
p => ShowView(p)
);
}
return _showViewCommand;
}
}
private void ShowView(object param)
{
if (param != null && param == ItemId) //ItemId for View 2.01
{
_regionManager.RequestNavigate("ViewSwitchingRegion", new Uri("View 2.01", UriKind.Relative));
}
}
}
public class DataItem : ViewModelBase
{
public DataItem()
{
this.Children = new ObservableCollection<DataItem>();
}
private string header;
public string Header
{
get {return this.header;}
set
{
if (this.header != value)
{
this.header = value;
OnPropertyChanged("Header");
}
}
}
private DataItem _itemId;
public DataItem ItemId
{
get { return _itemId; }
set
{
if (value != _itemId)
{
_itemId = value;
RaisePropertyChanged("ItemId");
}
}
}
public ObservableCollection<DataItem> Children { get; set; }
}
}
最佳答案
我终于解决了。我将对象参数更改为TreeView参数,如下所示
`
private void ShowView(TreeView param)
{
if (param.SelectedItem != null) //ItemId for View 2.01
{
var itemId = ((DataItem)param.SelectedItem).ItemId;
//should be able to manipulate the rest of the bits with the itemId
}
}
Make changes to the ShowViewCommand such that the ShowView param is cast to TreeView
Public ICommand ShowViewCommand
{
get
{
if (_showViewCommand == null)
{
_showViewCommand = new RelayCommand
(
p => ShowView(p as TreeView)
);
}
return _showViewCommand;
}
}
关于silverlight - 如何通过ID获取Silverlight TreeViewItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824106/
C#: TreeViewItem treeItem = null; treeItem = new TreeViewItem(); treeItem.Header = "
我有 webservice asmx,还有类: Country public string Name {get;set;} public string Code {get;set;} public L
我有一个Silverlight树 View ,该树 View 动态填充有treeviewitems(代表 View )。我的工作正常,但是当我单击Treeviewitem时说“ View 2.01”时
我使用最新版本的 mvvm light 工具包,但是我不清楚如何将 EventToCommand 用于事件 TreeViewItem.Expanded。 这很有效......我做错了什么?
当 TreeView(或应用程序)失去焦点时,如何更改所选 TreeViewItem 的背景。在这种情况下,默认情况下选定的项目具有浅灰色背景。 编辑:第一个答案后的尝试:但是找不到带有 Target
我希望能够通过右键单击在我的程序中选择一个 TreeViewItem。以前,(在 this question 中)我试图通过从任何我想允许选择 TreeViewItem 的地方调用 SetSelect
我是 WPF 表单的新手,在尝试在 TreeViewItem 中设置背景时遇到了一个问题。
我被要求更新 WPF 应用程序中的 TreeVeiw,该应用程序是从类对象动态构建的。正如您将看到的,treeveiw 不受任何约束。以下不是我的代码!! private void Buil
目前这是我的控件: 它应该在 ListBox 中,但问题是我需要能够仅选择父项或子项。 这是一个简单的概念,但我已经尝试了很多(包装在 ListBoxItem 中。使用扩展器并手动更改可
我希望能够从 TreeViewItem 中删除子节点通过按键盘上的删除按钮。我正在使用 SelectedItem尝试这样做。 目前我正在使用 KeyDown我的代码隐藏中的事件: private vo
private void SetCurrentItemInEditMode(bool EditMode) { if (product_tree.SelectedItem is Tre
你好,我正在使用一个 WPF 应用程序,我希望在展开 TreeView 上的项目之前触发事件。我知道目前还没有为此举办的事件,但我不确定如何以我这样做的方式添加一个事件,因此我们将不胜感激。 这是 x
我有一个 TreeView,我从一个集合中填充了一个 TreeViewItem 列表(使用绑定(bind)),我链接到一个 TreeView 事件“展开”以展开它并显示他们的 child ,我现在的目
您好问题是我有多个 TreeView 控件,每个 TreeView 都有自己的 TreeViewItem 样式,设置它 TreeView ItemContainerStyle="{StaticReso
我正在尝试创建一个向右水平扩展的 TreeView ,以便它像这样扩展: Parent1 -> Child1 Child2 Child3
为了在 TreeViewItem 中存储一个对象(比如一个类的实例),我目前将该对象存储在 TreeViewItem 中。的 Header然后覆盖 ToString该类的方法,以便它显示正确的字符串标
在我的 MVVM 应用程序中,我有一个树 View ,应该在选择时将树 View 项带入 View 。树 View 表示数据库中的记录。每个树 View 项通过在选择时展开项来按需加载其子项。 树 V
我有一个典型的 TreeView 和一个 View 模型。 View 模型有一个可观察的其他 View 模型集合,用作树的数据源。 public class TreeViewVM { publ
我有一个 TreeView我正在尝试实现一种样式,允许我使用 HierarchicalDataTemplate 在特定节点的所有子节点周围放置边框.我想要的一个例子如下所示: 以下代码是我到目前为止所
我在 TreeView 中有一个 TreeView 项目,它将绑定(bind)一个列表:
我是一名优秀的程序员,十分优秀!