我相信这不是一个重复的问题,在发布此问题之前,我已经看到了所有问题/答案.我想我在这里有不同的情况.
我使用Ubuntu 12.04并下载了GTK 2和3.我从GNOME的网站上复制了一个简单的GTK源代码.但是当我在终端中使用此命令时:
gcc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
Run Code Online (Sandbox Code Playgroud)
我明白了:
hello.c:(.text+0x17): undefined reference to `gtk_init'
hello.c:(.text+0x23): undefined reference to `gtk_window_new'
hello.c:(.text+0x47): undefined reference to `gtk_main_quit'
hello.c:(.text+0x5b): undefined reference to `g_signal_connect_data'
hello.c:(.text+0x67): undefined reference to `gtk_widget_show'
hello.c:(.text+0x6c): undefined reference to `gtk_main'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#include <gtk/gtk.h>
int
main (int argc,
char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不确定是否出现错误,因为我有两个版本的GTK +或者是什么.我是Ubuntu/Linux应用程序开发的新手.
由于客户提供的复杂请求,有时我的代码会变得混乱.自上次我在插件上工作以来,我花时间阅读并理解我之前写过的内容.
我想知道是否有人实现了一个好的设计模式,节省了大量的时间,使代码更有组织和可读性等.
我有一个名为Page的父对象,它有一个名为Control的对象列表:
public class Page
{
List<CustomControl> controls {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
CustomControl类具有以下定义:
public class CustomControl
{
string Name {get;set;}
string Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
比方说,Page类有两个CustomControls A和B.当Custom Control A的属性Value发生变化时,可以通知自定义控件B,以便它可以改变它的一些属性.
我正在考虑在CustomControl类上实现INotifyPropertyChanged事件,现在当同一个类的另一个实例具有其Modified的某个属性时,如何通知CustomControl的实例.
我定义了一个新的 ViewModel 类,如下所示:-
public class myviewmodel
{
public IEnumerable<Question> Questions { get; set; }
public decimal Total { get; set; }
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但我也可以将其定义为
public class myviewmodel
{
public List<Question> Questions { get; set; }
public decimal Total { get; set; }
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我想创建一个新的模型类,也会发生这种情况;那么这两种方法有什么区别呢?BR
我有两个类,一个用于ViewModel,另一个用于Product.Product类有一个名为Line Total的属性,ViewModel Class有一个名为Total Amount的属性.Product类绑定到DataGrid,用户插入随后自动更新行总计的数量.
这是ViewModel类:
public class ViewModel : INotifyPropertyChanged
{
public ObservableCollection<Product> products { get; set; }// the children
private decimal _TotalAmount;
public decimal TotalAmount // <=== has to hold sum of [products.LineTotal]
{
get
{
return totalAmount;
}
set
{
if (value != _TotalAmount)
{
_TotalAmount = value;
onPropertyChanged(this, "TotalAmount");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是Product类,它是一个子类:
public class Product : INotifyPropertyChanged
{
private decimal _LineTotal;
public …Run Code Online (Sandbox Code Playgroud) 我在Opportunity和自定义实体之间创建了一个(多对多)关系.CRM自动打破与称为" 相交表 " 的内置表的关系.
在Plug-in Registeration Tool中,我想在此特定表上添加Create/Update/Delete消息.但问题是它并不存在 - 甚至那里也不存在多对多的系统关系.
人们可能会建议我手动破坏关系,以便在注册工具中显示.但是有没有解决方案来访问这个内置表?
将花括号移动到同一行的最快方法是什么?
由此:
const value = {
input: 123
}
Run Code Online (Sandbox Code Playgroud)
对此:
const value = { input: 123 }
Run Code Online (Sandbox Code Playgroud)
我这样做的方法是将 Visual 与 hjkl 结合使用。
奖励:我怎样才能实现编辑,但反过来呢?
public ActionResult Update(string id)
{
Device record = new Device(); // OK
record = record.Find(new Guid(id), service); // OK
if (record.secondValue.HasValue) // <---
record.secondSelectList.FirstOrDefault(i => i.Value == record.secondValue.ToString()).Selected = true;
return View(record);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码找到一个给定ID的设备,然后设置DropDownList 如果 secondValue有一个值,如果没有则跳过.
代码工作正常,但在许多控制器中的许多操作中,我必须设置IF 条件来检查xxxValue是否确实具有值.
我不能直接这样做:
record.secondSelectList.FirstOrDefault(i => i.Value == record.secondValue.ToString()).Selected = true;
Run Code Online (Sandbox Code Playgroud)
因为在任何时候,FirstOrDefault都可能返回一个空引用,由于使用了.Selected属性,它将立即引发异常.
好的,我的问题是如何设置DropDownList而不需要使用If条件?
我想,而不是使用FirstOrDefault(),我将使用SetSelected().
record.secondSelectList.SetSelected(i => i.Value == record.secondValue.ToString());
Run Code Online (Sandbox Code Playgroud)
SetSelected()方法在哪里我将处理null结果.我怎样才能做到这一点?