我需要快速掌握WPF中的一些中间内容,并且我正在构建这个小应用程序作为我的学习基础。
我收集了五张照片。每张图片都有一些与之相关的数据:所有者,日期,大小等。
我希望能够点击该图片并将该信息加载到同一窗口中显示。我不想在新打开的窗口中加载信息。
有关搜索内容的任何建议,甚至是对该过程进行小规模口头调查的建议吗?
我正在使用Frame
加载最初的五张图片,但如果点击在用户控件中注册,我不知道如何捕获主父窗口上的点击。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="22" />
<RowDefinition />
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Header="_File" />
<MenuItem Header="_Edit" />
<MenuItem Header="_View" />
<MenuItem Header="_Help" />
</Menu>
<Frame Grid.Row="1" Name="contentFrame" Source="Roster.xaml" />
</Grid>
然后在Roster.xaml:
<UserControl x:Class="OracleOfLegends.Roster"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
//Lots of goodies here.
</UserControl>
答案 0 :(得分:1)
你从来没有提到你的模型对象...所以我会把它假设为
public class MyPicture : INotifyPropertyChanged
{
private string url;
private string name;
// Other fields
public Url
{
get{ return value;}
set{url=value;}
OnPropertyChanged("Url")
}
}
//Do same for other fields . I leave the implementation if INPC on you
public MyPictureListViewModel:INotifyPropertyChanged
{
ObservableCollection<MyPictureList> picList;
public PicList
{
get{return value;}
set{piclist=value;}
OnPropertyChanged("PicList")
}
//Fill the list with some methods... it depends on you
}
/// <summary>
/// Interaction logic for MyUserControl.xaml
/// </summary>
public partial class PicListDisplay
{
private readonly MyPictureListViewModel
myPictureListViewModel;
/// <summary>
/// PicListDisplay
/// </summary>
public PicListDisplay()
{
myPictureListViewModel= new MyPictureListViewModel();
this.DataContext = myPictureListViewModel;
InitializeComponent();
}
}
I would prefer to use ListView
<ListView Name="myPicListView" ItemsSource={Binding PicList}>
<ListView.ItemTemplate>
<Datatemplate>
<UserControls:Roster/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
// Here i am just Displaying the name you can put any control you want
<StackPanel DataContext="{Binding Path=SelectedItem,Elementname=myPicListView}">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</StackPanel> </UserControl>
这里我已经制作了一个listView,然后选择了listview,你可以在同一个窗口上获取数据....你也可以创建自己的视图,就像Windows资源管理器一样,或者在列表中使用视图
答案 1 :(得分:0)
您可以使用Frame
在WPF中执行相同的操作,您可以导航到包含该信息的新UserControl
。