如何在Windows 8.1 App中添加一个包含List的UserControl?

时间:2015-03-11 14:16:20

标签: c# win-universal-app

我想在UserControl中添加一个列表,其值来自Json。那么如何将这些值从另一个页面绑定到UserControl中,我还想为它添加一个SelectionChanged事件。

方案如下:

我有一个包含图片插件(图片)的xaml页面。单击图像我想打开包含列表值的UserControl(例如拍摄照片,从库中选择,录制视频和取消)。一旦用户根据调用的不同方法选择项目。

我在Windows Phone 8中使用CustomMessageBox实现了相同的方法,但是不可用,我可能需要使用UserControl来实现这一点。

请指导我。

更新

到目前为止我的尝试。

UserControl.Xaml

<UserControl
x:Class="TestApp.Resources.CameraPluginOptions"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyCouncilServices.Resources"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid>
    <ListView x:Name="CameraPlugin" 
     ItemContainerStyle="{StaticResource GenericListViewContainerStyle}"
     ItemTemplate="{StaticResource EvidenceListItemTemplate}"
     ItemSource="{Binding ItemSource}"
             />
</Grid>

UserControl.xaml.cs

public sealed partial class CameraPluginOptions : UserControl
{


    public event EventHandler SelectionChanged;

    public List<SUBPARAM> ItemSource
    {
        get { return (List<SUBPARAM>)GetValue(evidenceItemSourceproperty); }
        set { SetValue(evidenceItemSourceproperty, value); }
    }

    public static readonly DependencyProperty evidenceItemSourceproperty =
                    DependencyProperty.Register("ItemSource", typeof(List<SUBPARAM>),
                                                    typeof(CameraPluginOptions), new PropertyMetadata(0));


    public SUBPARAM SelectedOption
    {
        get { return (SUBPARAM)GetValue(selectedoptionproperty);}
        set { SetValue(selectedoptionproperty,value); }
    }

    public static readonly DependencyProperty selectedoptionproperty =
                    DependencyProperty.Register("SelectedOption", typeof(SUBPARAM),
                                                    typeof(CameraPluginOptions), new PropertyMetadata(0));


    private void PluginSelectionChanged(object sender,SelectionChangedEventArgs e)
    {
        if(SelectionChanged !=null)
            SelectionChanged(this,new EventArgs());
    }
    public CameraPluginOptions()
    {
        this.InitializeComponent();
    }
}

我想要使用UserControl的页面

TestUserControlPage.xaml.cs

PluginControl.DataContext = new EvidenceSource(){ItemSource=MCSManager.Instance.currentClientParams.EVIDENCE_MENU.SUB_PARAMS};
PluginControl.SelectionChanged += MediaListSelectionChanged;

TestUSerControl.xaml我正在使用UserControl

<Grid x:Name="imagePlugin"
          VerticalAlignment="Center"
          HorizontalAlignment="Center"
          Height="400"
          Width="600"
          Visibility="Collapsed"
          xmlns:local="using:TestApp.Resources">
        <local:CameraPluginOptions x:Name="PluginControl"
                                   />

我真正想要做的是将从Json获取的列表绑定到UserControl ListBox.Itemsource然后我想在调用UserControl的同一页面上有SelectionChanged事件。当用户选择Item时,应该执行特定操作。

0 个答案:

没有答案