我试图制作一个简单的菜单,风格与Microsoft Office中的菜单相同:
example screenshot http://s.techairlines.com/wp-content/uploads/2009/11/Office-Share.jpg
我尝试使用ListBox
作为菜单,但我似乎无法将每个listboxitem绑定到不同的面板。是否有捷径可寻?如果有人能给出一些指示或指向我的一些教程,我将非常感激。我觉得我在网上到处都搜索过。
我有一些问题。我在c#中使用了Silvermind的代码并添加了一个事件:
[ContentProperty("Content")]
public class ModelForMyListBox : INotifyPropertyChanged
{
private string title;
private object content;
public string Title
{
get { return title; }
set
{
if (value == title)
return;
title = value;
OnPropertyChanged("Title");
}
}
public object Content
{
get { return content; }
set
{
if (value == content)
return;
content = value;
OnPropertyChanged("Content");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
在XAML中,添加此内容时出错。
xmlns:controls="clr-namespace:WpfApplication1.Controls"
" WpfApplication1.Controls"未包含在程序集中
至于XAML的其余部分,我在使用控件时遇到错误,但我想这是由于上述错误。
希望你能帮助我纠正最后一次?
答案 0 :(得分:0)
最简单的方法是:
[ContentProperty("Content")]
public class ModelForMyListBox : INotifyPropertyChanged
{
private string title;
private object content;
public string Title
{
get { return title; }
set
{
if (value == title)
return;
title = value;
OnPropertyChanged("Title");
}
}
public object Content
{
get { return content; }
set
{
if (value == content)
return;
content = value;
OnPropertyChanged("Content");
}
}
}
在窗口或用户控件中添加ModelForMyListBox的名称空间,其前缀类似于controls
比如xmlns:controls="clr-namespace:Application1.Controls"
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ListBox x:Name="MenuListBox" DisplayMemberPath="Title">
<controls:ModelForMyListBox Title="Share">
<!-- <MyCustomViewObject here -->
</controls:ModelForMyListBox>
<controls:ModelForMyListBox Title="Help">
<!-- <MyCustomViewObject here -->
</controls:ModelForMyListBox>
</ListBox>
<ContentPresenter Grid.Column="1"
DataContext="{Binding ElementName=MenuListBox, Path=SelectedItem}"
Content="{Binding Path=Content}"/>
<Grid>
我希望你得到这个。