小编Har*_*raf的帖子

没有Mac的Xamarin Visual Studio IOS开发?

我是.NET开发人员,想在C#中编写IOS和Android应用程序.我已经阅读了围绕Xamarin for Visual Studio的内容,如果不是很贵的话,看起来很有趣!

你需要一台Mac来调试代码吗?您是否只需要联网的Mac来实际将应用程序部署到商店?

是购买Mac并在虚拟机中使用VS运行Windows的最佳选择,还是只需使用我的Windows机器,在Windows中编写和调试代码,然后连接到联网的Mac进行最终部署?

c# macos android ios xamarin

55
推荐指数
5
解决办法
6万
查看次数

WPF MVVM:将不同的ViewModel绑定到每个TabItem?

我有一个主窗口,其中包含一个包含2 tabItem秒的选项卡控件:

主窗口

我目前有1个ViewModel服务Tab1和Tab2.ViewModel随着SOC模糊,这变得有点臃肿.我想将逻辑拆分为2个视图模型:ViewModel 1和ViewModel2.我的理解是您可以将主窗口设置DataContext为包含ViewModel集合的Base ViewModel,然后您可以将每个TabItem断言为不同的ViewModel.

我见过的这些基本ViewModel示例公开了一个ObservableCOllection,如下所示:

private ObservableCollection<ViewModel1> _viewModelCollection
Public Observable Collection<ViewModel1> ViewModelCollection
{
   get { return _viewModelCollection; }
   set
     {
        _viewModelCollection = value;
        OnPropertyChanged("ViewModelCollection");
     }
}

public BaseViewModel()
{
  ViewModelCollection = new ObservableCollection<ViewModel1>();
  ViewModelCollection.Add(new ViewModel1(Tab1);
  ViewModelCollection.Add(new ViewModel1(Tab2);
}
Run Code Online (Sandbox Code Playgroud)

但是如何为每个TabItem分配不同的ViewModel?我想要Tab1 = ViewModel1&Tab2 = ViewModel2?

c# wpf mvvm

17
推荐指数
2
解决办法
2万
查看次数

使用 Moq 模拟 ViewModel 进行单元测试?

单元测试新手。我有一个 WPF 客户端应用程序通过basicHttpbinding. 一切都很好。我在我的 viewModel 中使用简单的构造函数依赖注入,传入一个IServiceChannel然后我调用我的服务方法,例如:

IMyserviceChannel = MyService;

public MyViewModel(IMyServiceChannel myService)
{
   this.MyService = myService;  
}

Private void GetPerson()
{
  var selectedPerson = MyService.GetSelectedPerson();
}
Run Code Online (Sandbox Code Playgroud)

然后我在客户端应用程序中添加了一个 MS 测试项目,我正在尝试使用 Moq 来模拟我的服务:

  [TestMethod]
    public void GetArticleBody_Test_Valid()
    {
        // Create channel mock
        Mock<IIsesServiceChannel> channelMock = new Mock<IIsesServiceChannel>(MockBehavior.Strict);    

        // setup the mock to expect the Reverse method to be called
        channelMock.Setup(c => c.GetArticleBody(1010000008)).Returns("110,956 bo/d, 1.42 Bcfg/d and 4,900 bc/d. ");

        // create string helper and invoke the Reverse method …
Run Code Online (Sandbox Code Playgroud)

c# wpf wcf unit-testing moq

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

Linq查询中的Guid.ToString()?

我有一个方法,尝试使用简单的where子句从我的数据库中提取记录.我有一个问题,因为我传入一个字符串值并将其与Guid(uniqueIdentifier)匹配.我需要将传递的值作为字符串绑定到DataGrid中,我需要该方法返回一个字符串.

显然在运行时,LinQ无法编译查询.该.ToString()方法无法编译为SQL.有任何想法吗?

private string getFileLocation(string LinkGuid)
{
    try
    {
        ISESEntities context = new ISESEntities();

        string query = (from f in context.tbFileAttachments
                where f.CCCPGUID.ToString() == LinkGuid
                select f.FileLocation).First();

        return query;           
    }
    catch(Exception e)
    {
       blah blah
    }
}
Run Code Online (Sandbox Code Playgroud)

c# sql linq

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

为什么我需要绑定到后面的代码中的依赖项属性,而不是在视图模型中?

我正在编写用户控件.Xaml和代码背后.为了绑定属性,后面的属性需要是一个依赖属性.了解.

那么为什么我可以绑定到INotifyPropertyChanged在视图模型中实现的poco,该模型被设置为视图的数据上下文但不在后面的代码中?

XAML:

XAxis="{Binding ElementName=TimeSeriesChartControl, Path=XAxis}" 
Run Code Online (Sandbox Code Playgroud)

代码背后:

public IAxis XAxis
{
    get { return (IAxis)GetValue(XAxisProperty); }
    set { SetValue(XAxisProperty, value); }
}

public static readonly DependencyProperty XAxisProperty =
    DependencyProperty.Register("XAxis", typeof(IAxis), typeof(TimeSeriesChart), new PropertyMetadata(default(IAxis)));
Run Code Online (Sandbox Code Playgroud)

此属性必须是依赖项属性.如果我在这里实现clr属性,绑定将失败.

为什么我可以在视图模型类中实现clr属性,但不能在后面的代码中实现?

c# wpf

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

从 LINQ 查询结果填充 Observable 集合

我刚刚开始使用 WPF MVVM & 我试图通过绑定到ObservableCollection我的视图模型中的 来填充数据网格视图。

我使用了一个简单的 LINQ 查询从表中选择所有内容并填充我的可观察集合,但我的 UI 不会显示网格结果,大概是因为 XAML 必须绑定到公共属性?

private void getTableResults()
{
    var query = from c in LDB.myTable
                select c;
    var results = query;

    ObservableCollection<myTable> MyCollection = new ObservableCollection<myTable>(results);
    OnPropertyChanged("MyCollection");
}
Run Code Online (Sandbox Code Playgroud)

这是我的 XAML 绑定:

<DataGrid ItemsSource="{Binding MyCollection}"
Run Code Online (Sandbox Code Playgroud)

我的DataContext已设置,并且我已检查它是否与另一个硬编码属性绑定。我哪里错了?我在集合上放置了一个断点,以便知道它正在由结果填充。如何公开ObservableCollection从 LINQ 结果填充的公共属性?

谢谢

补充一下,我的数据模型是 MyTable,它是一个 Entity Framework 4.0 edmx。

c# linq wpf xaml mvvm

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

更新从两个表中选择的Linq查询?

我正在尝试将SQL查询转换为Linq,以便从我的C#WPF应用程序中的命令调用.我试过使用Linqer,但查询不会翻译.我是Linq的新手,一直在读书.你使用Linq'JOIN'来解决这个问题吗?

update P 
set P.versionid=a.versionid
from tbPublicationArticles P, tbarticles a
where P.articleid=a.articlesid
Run Code Online (Sandbox Code Playgroud)

c# sql linq wpf

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

从所有格式到dd/MM/YYYY的DateTime.ToString?

我有一个简单的例程,它解析DateTime.Now并执行.ToString()它以将其添加到要保存的文件名中:

 DateTime timeNow = DateTime.Now;
 string dateNow = timeNow.ToShortDateString();
 DateTime dateTime = DateTime.ParseExact(dateNow, "dd/MM/yyyy", CultureInfo.InvariantCulture);          
 string DateString = dateTime.ToString("dd-MMM-yy");
 string fileName = string.Concat("MyArticle_" + region + "_" + DateString + fileExtension);
Run Code Online (Sandbox Code Playgroud)

这是结果输出字符串:

MyArticle_Africa_07-May-15.PNG
Run Code Online (Sandbox Code Playgroud)

这一切都很好,直到我在美国机器上获得日期时间设置不同的用户,例如

15年5月7日

在这种情况下,我的ParseExact()方法抛出异常,因为输入不是有效的日期时间.有没有办法容纳所有日期时间输入并解析为dd/MM/YYYY?

.net c# datetime

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

比较多种类型的多个列表的计数?

通常,如果所有列表都是字符串类型我将使用:

var allLists = new[] { list1, list2, list3 };
bool result = allLists.All(l => l.Count == allLists[0].Count);
Run Code Online (Sandbox Code Playgroud)

或同等学历.但是,如果List1是类型string,List2类型intList3类型,double那么我该如何实现上述目标?

Count当尝试上述方法并且不想沿着以下路线走时,显然是不可用的:

if(List1.Count == List2.Count && List2.Count == List3.Count etc. 
Run Code Online (Sandbox Code Playgroud)

c# linq generics

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

ComboBox SelectedIndex MVVM WPF

我有一个ComboBox绑定到一个ObservableCollection,tbPublications其中应该填充它.然后我从DataGrid中选择一行,它触发另一个我在其中插入新记录的Create表单tbPublications,一切都很好.

当我关闭所述创建表单并返回到我的ComboBox表单时,我正在清理并重新读取我的一个新项目ObservableCollection,将用户返回到他们刚刚创建的项目.然后ComboBox显示我新填充的集合中的一个项目,一切都很好.

我的问题是,在返回我的ComboBox表单时,新的出版物未设置为ComboBox显示中的选定项目,用户必须单击ComboBox然后选择该项目.

我无法SelectedIndex = "0"在我的视图中使用XAML,因为我想ObservableCollection在页面加载时在我的ComboBox中显示整个内容.

是否有任何方法可以在ViewModel中使用方法来解决这个问题,例如...

      private void SetSelectedIndex()
      {
        if (MyObservableCollection.Count == 1)
        {
            //Set selected indexer to "0";
        }
      }
Run Code Online (Sandbox Code Playgroud)

找到了解决方案,不确定它是否是最干净的"MVVM"解决方案......

在我的ObservableCollection中读取后,我调用了这个方法:

 if (_ModelPublicationsObservableList.Count == 1)
                {
                    SelectedPublication = _ModelPublication;
                    SetSelectedIndex();
                }
Run Code Online (Sandbox Code Playgroud)

这是获取当前主窗口并设置SelectedIndex的方法:

 private void SetSelectedIndex()
    {
        ArticlesDataGridWindow singleOrDefault = (ComboBoxWindow)Application.Current.Windows.OfType<ComboBoxWindow>().SingleOrDefault(x => x.IsLoaded);
        singleOrDefault.comboBox1.SelectedIndex = 0;        
    }
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml combobox mvvm

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

标签 统计

c# ×10

wpf ×6

linq ×4

mvvm ×3

sql ×2

xaml ×2

.net ×1

android ×1

combobox ×1

datetime ×1

generics ×1

ios ×1

macos ×1

moq ×1

unit-testing ×1

wcf ×1

xamarin ×1