小编Ath*_*ari的帖子

Databind DockPanel

我正在尝试将wpf中的Dockpanel数据绑定到viewmodel集合.我正在使用它来创建一个可自定义的表单,所以我不知道在运行之前有多少个孩子应该在dockpanel中.

我遇到的问题是,当我从数据模板中设置它时,附加属性DockStyle.Dock似乎没有得到应用.以下xaml是我正在做的简化版本.我希望第一个按钮填满屏幕的顶部,但真正发生的是它们是水平堆叠的.即使对DockPanel.Dock属性进行硬编码也不会影响按钮的布局.当我在XAMLPad中查看Visual Tree时,我注意到有ContentPresenters作为DockPanel的子项而不是按钮.ContentPresenters的布局是否与其他元素不同?是否有另一种数据绑定到DockPanels的技术?

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:sys="clr-namespace:System;assembly=mscorlib" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

<Grid>
<ItemsControl >
         <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <DockPanel LastChildFill="True"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
       <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Button DockPanel.Dock="{Binding}" Content="{Binding}"></Button>
            </DataTemplate>
       </ItemsControl.ItemTemplate>
       <sys:String>Top</sys:String>
          <sys:String>Bottom</sys:String>
       <sys:String>Left</sys:String>
       <sys:String>Right</sys:String>
<sys:String>Top</sys:String>
<sys:String>Top</sys:String>
<sys:String>Top</sys:String>
    </ItemsControl>
</Grid></Page>
Run Code Online (Sandbox Code Playgroud)

这是xamlpad中渲染控件的图片

c# wpf xaml

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

将 JObject 转换为集合

我有以下代码:

JToken hours = jToken["hours"];
Run Code Online (Sandbox Code Playgroud)

它返回以下 JSON:

{
    "monday": [
        ["11:00", "21:30"]
    ],
    "tuesday": [
        ["11:00", "21:30"]
    ],
    "wednesday": [
        ["11:00", "21:30"]
    ],
    "thursday": [
        ["11:00", "21:30"]
    ],
    "friday": [
        ["11:00", "2:00"]
    ],
    "saturday": [
        ["11:00", "2:00"]
    ],
    "sunday": [
        ["11:00", "21:30"]
    ]
}
Run Code Online (Sandbox Code Playgroud)

我需要将其解析为类型化集合,例如

<string, string> 
Run Code Online (Sandbox Code Playgroud)

或为任何一天选择一个值,例如

hours.Where(p=>p["monday"].Value<string>())
Run Code Online (Sandbox Code Playgroud)

我试过:

IList<JToken> a = hours.Children().ToList();

var a = JsonConvert.DeserializeObject<Pair<string, string>>(hours.Value<string>());

var a = hours["monday"];

hours.Where(p=>p["monday"].Value<string>())
Run Code Online (Sandbox Code Playgroud)

没有工作。

parsing json json.net

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

如何根据现有方法(如C#/ NET)创建新线程?

如何在不使用Runnable类或在run()方法中实现我的线程代码的情况下在java中执行此操作?

public void dud()
{
   System.out.println("create me on a new thread");
}

public void main() 
{
   Thread t1 = new Thread(dud).start();
   Thread t2 = new Thread(dud).start();
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

如何创建.net核心类库

我是.net核心的新手.我需要一些帮助来配置我的project.json文件来创建一个带.net核心的类库.我实际上阅读了很多文档,但是由于有大量的东西需要阅读,我很遗憾.我知道我必须使用NETStandardLibray(https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md),但我不知道怎么把它放进去我的config.json文件.

这是我的config.json文件:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    },
    "xunit": "2.1.0",
    "dotnet-test-xunit": "1.0.0-rc2-build10025"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },
  "testRunner": "xunit"
}
Run Code Online (Sandbox Code Playgroud)

我想构建一个简单的类库,以便在另一个项目中重用,我也希望它有单元测试.

我在这里的主要困难是关于绰号.他们真是一团糟.我只是想构建一个可以在任何平台上使用的类库,但看起来我必须在我的project.json中选择平台.在已弃用的标记列表中,我不知道我应该使用什么名字.为了使用NET标准库,我应该将具有nuget标识符netcoreapp1.0的平台.NET Standard Application 1.5作为目标,还是应该使用具有nuget标识符netstandard1.3的平台.NET Platform 5.0?什么是正确的平台?NETStandard Library不应该与平台无关吗?我应该将这些标识符放在我的project.json的依赖项或框架部分中吗?那两个部分的区别是什么?我完全迷失了:(

.net c# .net-core .net-core-rc2 .net-standard-1.5

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

从命令行更新.net标准PackageReference

我们有一堆快速移动的内部nuget程序包。

我们希望这些软件包的使用者始终使用最新版本。当前,我们通过在构建之前在命令行上运行nuget update来在CI系统上执行此操作。

但是,我们现在正在转向.net标准/核心。在.net标准csproj上运行nuget update时,出现以下错误:

无法更新。该项目不包含packages.config文件。

即使.net核心/标准csproj文件已删除了Nuget,Nuget仍然似乎希望使用packages.config。

如何使用.net核心/标准csproj项目的命令行将PackageReferences更新到最新版本?

更新:我创建了一个错误报告,以防万一这是这里的错误:https : //github.com/NuGet/Home/issues/4945

.net c# nuget .net-core .net-standard

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

在 VS2017 中如何从 .net 项目中引用 netstandard 项目?

我有一个 netstandard2.0 项目,我用它来与 3rd 方 Web 服务交互。我需要在同一个解决方案中从较旧的 .net 4.6.2 项目中引用该项目,但是当我这样做时,我会收到一堆关于需要引用我定义的类型的错误。

例如,我将调用 netstandard 库中的一个返回 Task 的方法,但我会收到一个错误,提示我需要对 System.Threading.Tasks 的引用,即使我已经有了一个。

.net nuget .net-4.6.2 visual-studio-2017 .net-standard

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

更新ViewModel属性时如何避免递归?

在我的视图中,我有一个滑块和一个组合框.

当我更改滑块时,我希望组合框改变.

当我更改组合框时,我想要更改滑块.

我可以使用其中一个,但如果我尝试更新两个,我会收到StackOverflow错误,因为一个属性在无限循环中不断更新另一个属性.

我已经尝试进入一个Recalculate(),其中更新在一个地方完成,但仍然遇到递归问题.

如何在不进行递归的情况下让每个控件更新另一个?

在视图中:

<ComboBox 
    ItemsSource="{Binding Customers}"
    ItemTemplate="{StaticResource CustomerComboBoxTemplate}"
    Margin="20"
    HorizontalAlignment="Left"
    SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>


<Slider Minimum="0" 
        Maximum="{Binding HighestCustomerIndex, Mode=TwoWay}" 
        Value="{Binding SelectedCustomerIndex, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

在ViewModel中:

#region ViewModelProperty: SelectedCustomer
private Customer _selectedCustomer;
public Customer SelectedCustomer
{
    get
    {
        return _selectedCustomer;
    }

    set
    {
        _selectedCustomer = value;
        OnPropertyChanged("SelectedCustomer");
        SelectedCustomerIndex = _customers.IndexOf(_selectedCustomer);
    }
}
#endregion

#region ViewModelProperty: SelectedCustomerIndex
private int _selectedCustomerIndex;
public int SelectedCustomerIndex
{
    get
    {
        return _selectedCustomerIndex;
    } …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf mvvm

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

在NUnit测试中处理MessageBox

我正在为我的WPF C#应用程序编写NUnit测试代码.这里有一些我的方法有MessageBox.Show("");但我们不知道如何在代码中处理这个.

请通过提供解决方案帮助我.

谢谢,

c# wpf nunit

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

WPF覆盖依赖项属性metdata无法正常工作

我需要监视WPF窗口上最顶层的属性值更改.我写的是这样的:

static MainWindow()
        {
           TopmostProperty.OverrideMetadata(typeof(Window), new PropertyMetadata(new PropertyChangedCallback(Changed)));
        }

        public MainWindow()
        {
            InitializeComponent();
        }

        private static void Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            throw new NotImplementedException();
        }
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:他调用类型'WpfApplication4.MainWindow'上的构造函数,它与指定的绑定约束相匹配,引发了一个异常.行号'4'和行位置'9'."

.net c# wpf

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

如何从 .NetStandard 类库引用 net40 框架程序集?

在project.json项目系统下,我能够指定每个框架的框架程序集依赖关系。dotnet 文档(现已过时)显示了以下示例。

{
    "frameworks":{
        "net20":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net35":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net40":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net45":{
            "frameworkAssemblies":{
                "System.Net.Http":"",
                "System.Threading.Tasks":""
            }
        },
        ".NETPortable,Version=v4.5,Profile=Profile259": {
            "buildOptions": {
                "define": [ "PORTABLE" ]
             },
             "frameworkAssemblies":{
                 "mscorlib":"",
                 "System":"",
                 "System.Core":"",
                 "System.Net.Http":""
             }
        },
        "netstandard16":{
            "dependencies":{
                "NETStandard.Library":"1.6.0",
                "System.Net.Http":"4.0.1",
                "System.Threading.Tasks":"4.0.11"
            }
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

对于更新后的 dotnet sdk v1.1.1,如何在 csproj 下执行此操作?我想引用 net40 的 System.Configuration,但不引用 netstandard 1.6。

.net c# csproj project.json .net-standard

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