小编Den*_*nis的帖子

在PCL服务参考设置中禁用基于任务的异步操作

我目前正在构建一个基于Xamarin的移动应用程序.对于该项目,我创建了一个框架4.5的PCL项目.我使用VS 2013作为开发IDE.现在我想为此PCL添加WCF服务引用.在为此PCL项目添加服务引用时,我注意到禁用了异步操作的生成.请查看图像以获取更多详细信息.

在此输入图像描述

我通过Nuget将BCL.Async包添加到项目中.但我仍然无法从radiobutton列表(禁用)访问基于任务的操作.

那么有没有办法在服务客户端生成基于任务的异步操作?

wcf asynchronous portable-class-library xamarin xamarin.forms

13
推荐指数
1
解决办法
1475
查看次数

带有标题'*'的DataGridColumn已存在于DataGrid的Columns集合中

我有一个MVVM模式的WPF应用程序.在我的一个观点中,我必须绑定ObservableCollection到视图.在那个视图中,我有一个ListBox和一个DataGrid都绑定到相同ObservableCollection但做不同的事情,如事件,风格等.

我只需要在时间,我所做的是创建两个用户控件,一个用于显示其中一个控件DataGrid和其他的ListBox.我通过ContentControl在主视图上放置一个类似于这个博客的东西来切换它们.默认视图是DataGrid,当点击一个按钮时,显示另一个视图(即ListBox).直到这个工作正常.

还要记住,数据网格列是使用以下链接中描述的解决方案动态生成的.所以当我回去DataGrid查看它时,在foreach语句中向数据网格添加列时抛出错误(请参阅上一个链接的答案)

"带有标题'Ord'的DataGridColumn已经存在于a DataGrid.的Columns集合中.DataGrids不能共享列,也不能包含重复的列实例."

但我确信在DataGrid向其Count属性添加列之前是零(dataGrid.Columns.Count()).那么DataGrid标题属性如何保持?有没有办法清除标题值?

请建议......

c# wpf mvvm wpfdatagrid

12
推荐指数
1
解决办法
1611
查看次数

基于用户权限的自定义身份验证和授权

目前我正在开发一个带有MS Sql server数据库的ASP.Net MVC 5应用程序.我需要实现基于ASP.Net identity 2.0的身份验证和授权.我刚刚介绍了Identity的基本概念,并尝试在我的应用程序中实现相同的功能.由于数据库已经定义,我需要稍微自定义Identity.当我查看数据库时,表格与我通常在样本身份项目中发现的有点不同.

在此输入图像描述

从图像中可以看到,有一个名为user group的表,并根据模块定义了一组权限.默认情况下,用户可以访问相同的权限.如果要更改任何权限,可以通过在"用户权限"表中设置权限来覆盖它.

所以我的第一个问题是ASP.具有自定义授权和授权的网络身份是实现这样的场景的正确方法吗?

从视角来看,我必须根据用户/用户组权限生成菜单,并且还要根据它们启用/禁用按钮.我能够根据数据库值生成菜单.但我需要授权每个客户端请求,因此我认为AuthorizeAttribute是最佳选择.请指教?任何好的设计模式或帖子都很受欢迎.

c# authentication asp.net-mvc asp.net-identity

12
推荐指数
1
解决办法
5573
查看次数

MVVMLight Simple IOC - 动态注册和取消注册数据服务实现

我有一个支持MVVM Light Toolkit的WPF应用程序.该应用程序具有以下方案.该应用程序有两种数据连接模式.一个是WCF服务,另一个是直接数据库.应用程序应通过上述模式之一连接到数据库.连接模式选择位于登录窗口中.最终用户可以选择其中一种连接模式(WCF服务或直接数据库),并根据该选择在组合框中加载连接配置列表.(有关更多信息,请查看附图).连接配置位于本地xml配置文件中.此外,我还有一个默认连接配置,如果选择了任何连接配置,则应该分配该配置.

在此输入图像描述

在View Model Locator中,我正在注册默认服务,如下所示

public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            if (ViewModelBase.IsInDesignModeStatic)
            {
                // Create design time view services and models
                if (!SimpleIoc.Default.IsRegistered<IDataService>())
                    SimpleIoc.Default.Register<IDataService, MockDataClient>();
            }
            else
            {
                // Create run time view services and models
                if (!SimpleIoc.Default.IsRegistered<IDataService>())
                {
                    switch (DefaultConnectionConfiguration.ConnectionMode)
                    {
                        case DataConnectionMode.WcfService:
                            var wcfServiceConfiguration = (WcfServiceConfiguration)CurrentConnectionConfiguration;
                            SimpleIoc.Default.Register<IDataService>(
                                () =>
                                wcfServiceConfiguration != null
                                    ? new DataServiceClient("WSHttpBinding_IDataService",
                                                                 wcfServiceConfiguration.EndpointUrl)
                                    : null);
                            break;

                        case DataConnectionMode.Database:
                            SimpleIoc.Default.Register<IDataService, DbClient>();
                            break;
                    }
                }

            }
        SimpleIoc.Default.Register<LoginViewModel>();
        SimpleIoc.Default.Register<ManageConfigurationsViewModel>();
Run Code Online (Sandbox Code Playgroud)

无论与dbclient和DataServiceClient实施IDataservice. …

c# wpf design-patterns mvvm mvvm-light

9
推荐指数
1
解决办法
7529
查看次数

WpfToolkit AutoCompleteBox ContextMenu无法正常工作

在我的一个WPF项目中,我集成了WPF Toolkit的AutoCompleteBox控件.我需要一个自定义Context Menu的控件,我已添加一个使用该ContextMenu属性.不幸的是,它没有显示自定义创建的但显示默认值(即剪切,复制,粘贴剪切和复制为禁用).

为了重新创建问题,我创建了一个示例项目,窗口中包含2个控件Grid.

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <toolkit:AutoCompleteBox>
            <toolkit:AutoCompleteBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Menu Item 1"></MenuItem>
                    <MenuItem Header="Menu Item 2"></MenuItem>
                </ContextMenu>
            </toolkit:AutoCompleteBox.ContextMenu>
        </toolkit:AutoCompleteBox>
        <TextBox Grid.Row="1" >
            <TextBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Menu Item 1"></MenuItem>
                    <MenuItem Header="Menu Item 2"></MenuItem>
                </ContextMenu>
            </TextBox.ContextMenu>
        </TextBox>
    </Grid>
Run Code Online (Sandbox Code Playgroud)

这两个控件具有相同的功能ContextMenu,如果我运行解决方案,我可以看到创建的自定义ContextMenu工作正在工作TextBox而不是AutoCompleteBox.

此外,我将相同的上下文菜单设置为网格(父控件)并设置 ContextMenu="{x:Null}"为TextBox&AutoCompleteBox.现在ContextMenu继承,TextBox但不是AutoCompleteBox.

所以我的问题是,如何ContextMenu为AutoCompleteBox 创建自定义?如果它不是通过design(AutoCompleteBox),我如何添加ContextMenu到继承自定义的AutoCompleteBox控件AutoCompleteBox.请指教.

c# wpf wpftoolkit

9
推荐指数
1
解决办法
753
查看次数

在ViewModel Locator中使用SimpleIOC注册WCF服务客户端时无法提供端点地址

我正在使用MVVM Light Toolkit 4.1.24开发一个WPF应用程序.这是我的ViewModel Locator类.

public class ViewModelLocator
    {
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            if (ViewModelBase.IsInDesignModeStatic)
            {
                // Create design time view services and models
                SimpleIoc.Default.Register<IService1, DesignDataService>();
            }
            else
            {
                // Create run time view services and models
                SimpleIoc.Default.Register<IService1, Service1Client>();
            }

            SimpleIoc.Default.Register<MainViewModel>();
        }

        public MainViewModel Main
        {
            get
            {
                return ServiceLocator.Current.GetInstance<MainViewModel>();
            }
        }

        public static void Cleanup()
        {
            // TODO Clear the ViewModels
            ServiceLocator.Current.GetInstance<MainViewModel>().Cleanup();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# wpf wcf mvvm mvvm-light

8
推荐指数
1
解决办法
702
查看次数

MVVM模式中失去焦点事件策略

我正在开发一个使用MVVM Light Toolkit的MVVM设计模式的WPF应用程序.目前我有这样的场景.

在此输入图像描述

我将Items Control绑定到Organization集合.

  1. 由组织名称和清单组成的组织.
  2. 由项目名称,列表和新员工组成的项目
  3. 由Emp Name,Contact No和Email组成的员工

在此输入图像描述

这里Employee本身是一个用户控件,可以在Existing和New Employee数据中重用.

用户可以在每个控件的Lost Focus事件中更新现有员工的详细信息(即List).在添加新员工时,我使用用户控件Lost Focus Event 处理了这种情况.因此,在使用MVVM Light Toolkit EventToCommand的用户控制丢失焦点事件时,我将EventArgs传递给View Model,然后从EventArgs中找到原始源(或遍历可视树)以通过检查是否插入来识别是否要插入焦点在使用IsKeyBoardFocusWithin属性的同一用户控件内.

这是MVVM模式上的正确实现吗?

通过以上方法,我必须:

  1. 遍历可视树或从EventArgs获取原始源我必须引用System.Windows.Controls.

  2. 在单元测试方面,模拟EventArgs会更加困难.

那么有没有更好的MVVM方法来处理这种情况......

wpf mvvm mvvm-light

8
推荐指数
1
解决办法
2418
查看次数

嵌套列表框如何在子列表框鼠标双击上设置父列表框selectedItem

我有一个嵌套ListBox.在内部列表框鼠标双击事件,我需要基于一些逻辑打开一个新窗口,为此我需要内部ListBox SelectedItem及其相应的外部ListBox SelectedItem.如何以MVVM方式获取此信息?

<ListBox ItemsSource="{Binding OuterCollection}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding OuterProperty1}" />
                            <ListBox Width="200" ItemsSource="{Binding InnerCollection}">
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding InnerProperty1}" />
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
Run Code Online (Sandbox Code Playgroud)

要记住的事情:

1)内部集合和外部集合项之间没有关系.

2)我正在使用MVVMLight Toolkit,作为临时解决方案,我只是将内部ListBox Mouse Double Click事件参数传递给View模型,并遍历树以查找Outer ListBox项.我知道这是违反MVVM规则的,所以我怎么能以适当的MVVM方式做到这一点?

c# wpf listbox mvvm mvvm-light

7
推荐指数
1
解决办法
1636
查看次数

嵌套的ObservableCollection - 从子到父的Propogate通知

我正在使用MVVM Light Toolkit开发WPF应用程序.我只想显示一个嵌套,它将Employee Attendance详细信息保存到内部网格中并在内部网格中执行一些CRUD功能,并根据这些更改我必须自动重新计算外部收集记录.内收集()是表示在的. ObservablecollectionDataGridPunchDetailModelsRowDetailsTemplateDataGrid

这是模特:

    public class AttendanceModel : ObservableObject
     {
        public const string EmpNamePropertyName = "EmpName";

        private string _empName = string.Empty;

        public string EmpName
        {
            get
            {
                return _empName;
            }
            set
            {
                Set(EmpNamePropertyName, ref _empName, value);
            }
        }

        public const string PunchDetailModelsPropertyName = "PunchDetailModels";

        private ObservableCollection<PunchDetailModel> _punchDetailModels = null;

        public ObservableCollection<PunchDetailModel> PunchDetailModels
        {
            get
            {
                return _punchDetailModels;
            }
            set
            {
                Set(PunchDetailModelsPropertyName, ref _punchDetailModels, value);
            }
        }           
        private string _inOutCount;
        public …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm mvvm-light

7
推荐指数
1
解决办法
2238
查看次数

使用Entity framework 5和VS 2012,DbContext代码生成策略失败

我在.NET framework 4.5(VS 2012)中有一个WPF项目,并使用NuGet包下载了Entity Framework 5.解决方案.所有关于Entity Framework 5的文档都说默认代码生成策略None(即DbContext代码生成).但就我而言,在添加新的ADO.Net实体数据模型时,代码生成策略默认的(即EF设计器生成派生自ObjectContext的上下文类和从EntityObject派生的实体类.)但我想遵循DbConext代码生成机制.我正在遵循Database First方法.我错过了任何设置吗?还是我需要单独安装T4模板?

谢谢.

c# dbcontext .net-4.5 entity-framework-5 visual-studio-2012

6
推荐指数
1
解决办法
4882
查看次数

来自Blob存储的流畅视频流

我有一个MVC 4应用程序,其中包含一个视图,仅显示来自MP4格式的azure blob存储的"视频".目前我正在使用MediaElment.js(或任何典型的Flash播放器)作为视频播放器.如何以流畅的流式传输或渐进式下载(自适应流式传输)方式播放这些视频.我必须在Azure中设置哪些配置才能支持流式传输?在将MP4文件上传到blob存储之前,我还需要做些什么吗?

我已经浏览了这个链接 http://msdn.microsoft.com/en-us/spazuretrainingcourse_spblobstorageazure.aspx,据我所知,Windows Azure Blobs Uploader用于将视频文件作为客户端上传到azure和silverlight.就我而言,视频是从单独的应用程序上传的,因此无法操纵视频文件.那么有没有什么方法可以在没有任何变化的情况下实现流媒体播放并在除了使用Silverlight之外的视频播放器中播放它?

如果我可以在上传时更改媒体文件,是否可以执行任何操作?

谢谢.

flash azure video-streaming blobstorage

5
推荐指数
1
解决办法
2763
查看次数

WPF DataGrid自定义排序,锁定了一些记录

我有一个WPF Datagrid实现自定义排序,它工作正常.我需要将集合中的一些记录锁定到顶部和底部(顶部锁定和底部锁定).因此,当特定记录被Top锁定时,它应该是集合中的第一个记录,而不管所选列的任何值(即我不想对那些被锁定和锁定底部的行进行排序).这是我的自定义排序方法.

private void PerformLineCustomSort(DataGridColumn column)
        {
            ListSortDirection direction = (column.SortDirection != ListSortDirection.Ascending) ? ListSortDirection.Ascending : ListSortDirection.Descending;
            column.SortDirection = direction;
            ListCollectionView listCollectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(Lines);

            LineSorter lineSort = new LineSorter(direction, column);
            listCollectionView.CustomSort = lineSort;

        }
Run Code Online (Sandbox Code Playgroud)

其中LineSorter是我的IComparer实现的自定义排序器类.这很好用.现在我想将Top lock和Bottom lock应用于ListCollectionView.我已经尝试了以上代码,但它没有任何更改(即列表仅基于自定义排序列进行排序).

listCollectionView.SortDescriptions.Add(new SortDescription("TopLock", ListSortDirection.Descending));
listCollectionView.SortDescriptions.Add(new SortDescription("BotLock", ListSortDirection.Ascending));
Run Code Online (Sandbox Code Playgroud)

有没有办法做这种情况或我需要手动删除,然后添加锁定的记录.请建议..

wpf wpfdatagrid listcollectionview c#-4.0

5
推荐指数
1
解决办法
616
查看次数

WPF窗口冷启动 - 显示黑屏

我有一个使用MVVM模式的WPF应用程序.启动窗口包括3所控制Menu,TitleBar和一个DataGrid.目前,完成所有操作(从服务中获取数据,动态生成DataGrid及其渲染)大约需要5秒钟,之后它会突然显示给UI.问题是,最终用户在启动程序后必须等待5秒才能看到窗口.大多数操作都与之相关DataGrid.所以我将DataGrid相关代码移动到了Window LoadedEvent,现在窗口突然打开但是显示黑屏,一段时间后它显示DataGrid的数据.

所以我的目标是在完成初始加载后显示窗口,MenuTitleBar在完成DataGrid后台线程中加载任务,以便在视图中显示加载面板.如何DataGrid在完成初始加载后调用与该相关的特定方法?

此外,我不能使用Splash屏幕(它在要求中).

请指教?

c# wpf xaml mvvm

1
推荐指数
1
解决办法
1572
查看次数