需要一些指导这个简单的WPF单窗口加载页面

时间:2011-11-30 04:10:41

标签: c# wpf

我需要快速掌握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>

2 个答案:

答案 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

ViewModel MyPictureListViewModel

    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