我有一个List的MyType1对象.我想在一个新List的MyType2对象中复制所有这些对象,有一个构造函数MyType2,它将一个MyType1对象作为参数.
现在,我这样做:
List<MyType1> type1objects = new List<MyType1>();
// Fill type1objects
// ...
List<MyType2> type2objects = new List<MyType2>();
foreach (MyType1 type1obj in type1objects) {
MyType2 type2obj = new MyType2(type1obj);
type2objects.Add(type2obj);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一行(我想也许Linq可能)?
我有一个ViewModel类,我想响应从按钮触发的内置刷新命令,但我不知道如何声明CommandTarget.
简而言之,我的代码如下
ViewModel构造函数和CanExecute和Executed事件处理程序 -
public ViewModel()
{
CommandBinding binding = new CommandBinding(NavigationCommands.Refresh, CommandHandler);
binding.CanExecute += new CanExecuteRoutedEventHandler(binding_CanExecute);
binding.Executed += new ExecutedRoutedEventHandler(binding_Executed);
CommandManager.RegisterClassCommandBinding(typeof(ViewModel), binding);
}
void binding_Executed(object sender, ExecutedRoutedEventArgs e)
{
Debug.Print("Refreshing...");
}
void binding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
Run Code Online (Sandbox Code Playgroud)
标记是 -
<Button Command="Refresh">refresh</Button>
Run Code Online (Sandbox Code Playgroud)
现在,我已尝试在此按钮上设置CommandTarget,{Binding Source={StaticResource ViewModel}}但我得到运行时说Cannot convert the value in attribute 'CommandTarget' to object of type 'System.Windows.IInputElement'.
我是命令的新手,所以我完全可能在这里犯了各种各样的错误.任何帮助,将不胜感激.
假设我有一个如此定义的记录......
type Employee = {Name : string; Salary : int}
Run Code Online (Sandbox Code Playgroud)
我想要另一种Salary固定的类型.我想能说...
type Manager = {Name: string; Salary : int = 250000}
Run Code Online (Sandbox Code Playgroud)
......但似乎我做不到.
我有什么选择来获得这种行为?
我正在尝试使用FSharp.Charting柱形图绘制一些类别/计数数据,除非列数达到10或更多,否则一切都按预期工作.
来自http://fslab.org/FSharp.Charting/BarAndColumnCharts.html.
let data =
[ "Africa", 1033043;
"Asia", 4166741;
"Europe", 732759;
"South America", 588649;
"North America", 351659;
"Oceania", 35838]
let chart = Chart.Column data
chart.ShowChart()
Run Code Online (Sandbox Code Playgroud)
所以要清楚,上面的代码很好,但如果我添加4个以上的区域,我没有得到所有的标签....
let data =
[ "Africa", 1033043;
"Asia", 4166741;
"Europe", 732759;
"South America", 588649;
"North America", 351659;
"Oceania", 35838;
"Africa2", 1033043;
"Asia2", 4166741;
"Europe2", 732759;
"South America2", 456789
]
let chart = Chart.Column data
chart.ShowChart()
Run Code Online (Sandbox Code Playgroud)
有谁知道如何让所有列名出现?我无法在文档中看到任何有用的内容.
我正在尝试根据我班级上布尔值的绑定来为 a的ScaleY属性设置动画。当值第一次被(应用程序首次启动时)视为 false时,当我第一次在复选框的选中事件中将其更改为 true时,动画发生,但当我在同一个复选框的未选中事件中将其设置为 false 时,不会发生动画。LayoutTransformDataTriggerViewModelDataTrigger
下面列出了我正在做的事情的简化版本。
ViewModel 类非常简单,包含一个DependencyProperty名为 Selected 的布尔值。
public class VM : DependencyObject
{
public bool Selected
{
get { return (bool)GetValue(SelectedProperty); }
set { SetValue(SelectedProperty, value); }
}
// Using a DependencyProperty as the backing store for Selected. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedProperty =
DependencyProperty.Register("Selected", typeof(bool), typeof(VM), new UIPropertyMetadata(false));
}
Run Code Online (Sandbox Code Playgroud)
该Window.xaml包含一个按钮和一个复选框。当复选框被选中时,当它被取消选中时,我将 ViewModel 的“Selected”属性设置为 true 和 false。这是 xaml 和代码隐藏的代码。
<Window x:Class="DataTriggers.Window1" …Run Code Online (Sandbox Code Playgroud) f# ×2
wpf ×2
c# ×1
coding-style ×1
command ×1
datatrigger ×1
fsharpchart ×1
inheritance ×1
linq ×1
recordtype ×1