Нужно руководство для этой простой страницы загрузки в одном окне WPF - PullRequest
0 голосов
/ 30 ноября 2011

Мне нужно освоиться с некоторыми промежуточными вещами в 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 ]

1 голос
/ 30 ноября 2011

Вы никогда не упоминали о своем объекте модели ... поэтому я буду считать его

Модель

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>  

Здесь я сделалa listView, а затем, выбрав просмотр списка, вы можете получить данные в том же окне .... также вы можете создать свой собственный вид, подобный Windows Explorer, или использовать его внутри списка. View

0 голосов
/ 30 ноября 2011

Вы можете сделать почти то же самое в WPF, используя Frame, который вы можете перейти к новому UserControl, содержащему информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...