我有一个TreeView项目,我想要ContextMenu只弹出第二层项目.我该怎么做呢?
非常简单的问题.我有一个在gcc中使用-g选项生成的可执行文件,用于将调试信息输出到可执行文件中?我可以将这个调试符号信息输入visual studio吗?或者,如果我想调试,我是否需要下载32位gdb和gdb前端?
或者也许有一些方法可以让gcc生成数据视觉工作室想要的?
所以我有一个EventHandlers的字典,但我发现当我在将keyvaluepair添加到字典之前附加到一个事件时,一切正常.但是,如果我添加keyvaluepair然后更新eventhandler的值,则字典不会更新.
public static event EventHandler TestEvent;
private static Dictionary<int, EventHandler> EventMapping = new Dictionary<int, EventHandler>();
//TestEvent += GTKWavePipeClient_TestEvent;
EventMapping.Add(0, TestEvent);
TestEvent += GTKWavePipeClient_TestEvent;
//test event is non null now. keyvaluepair in EventMapping has a value of null
Run Code Online (Sandbox Code Playgroud) 我最近发生了一个异常,直到我查看 chrome 开发工具控制台时才注意到。
网站的 javascript 是否只是在某个更高级别处理和记录异常?我没有处理下面 function1 中的异常,所以后面的函数只是没有运行或什么的。
发生异常时究竟会发生什么?我习惯了一个未处理的异常意味着程序刚刚停止
containingFunction
{
function1();
function2()
function3()
return;
}
Run Code Online (Sandbox Code Playgroud) 我有两个问题.我想知道在C#库中是否有一个简单的类来存储值对而不是一个,这样我就可以在列表的同一节点中存储一个类和一个整数.我认为最简单的方法是创建一个容器类,但每次都是额外的工作.我想知道我是否应该这样做.我知道在.NET的更高版本(我使用的是3.5)中,我可以存储有元组,但这对我来说是不可用的.
我想更大的问题是使用字典存储整数类映射的内存缺点是什么,即使我不需要在O(1)中访问并且只能搜索列表?哈希表的最小大小是多少?我应该制作我需要的包装类吗?
或者我应该只为正在表示的域数据创建视图模型?在阅读MVVM时,我遇到了这个:
"ViewModel负责这些任务.这个术语的意思是"视图的模型",可以被认为是视图的抽象,但它也提供了视图可用于数据绑定的模型的特化.后一个角色ViewModel包含将Model类型转换为View类型的数据转换器,它包含View可用于与Model交互的命令."
http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx
如果viewmodel是视图的模型,那么将视图的属性放在viewmodel而不是视图本身后面的代码中是不是有意义?
我想在制作自定义控件时,我很难决定何时应该在控件的代码后面添加一个属性,以及何时为控件创建一个viewmodel来表示它.老实说,我觉得将所有控件的视图相关属性移动到viewmodel会清理控件后面的代码,只留下控制逻辑.
但是,如果我要改变这样的事情,那么当项目需要来自控件本身的属性时,我不能再使用{Binding ElementName = control,Path = property}而必须获取父项的数据上下文(因为当前的datacontext将位于可观察集合的各个子项目上.
基本上我在考虑是否应该将属性从类GraphViewer移动到GraphViewerViewModel然后绑定到它.
代码值一百万字所以:public class GraphViewerViewModel:DependencyObject {private const int DEFAULT_PEN_WIDTH = 2; private const int DEFAULT_GRAPH_HEIGHT = 25;
public SignalDataViewModel _SignalDataViewModel
{
get;
set;
}
public PreferencesViewModel _PreferencesViewModel
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
与此同时
public class SignalDataViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
ObservableCollection<SignalViewModel> _signals;
public ObservableCollection<SignalViewModel> Signals
{
get
{
return _signals;
}
private set
{
_signals = value;
}
}
ObservableCollection<SignalViewModel> _AddedSignals;
public ObservableCollection<SignalViewModel> AddedSignals
{
get
{ …Run Code Online (Sandbox Code Playgroud) 所以我想知道相对uri应该相对于哪里设置.我以为这是主要项目.
我将图像存储在文件夹图像下.images文件夹直接在DaedalusGraphViewer项目下的解决方案下也有同名的名字(DaedalusGraphViewer).
我曾假设相对uri与项目相关,但我似乎没有任何运气.从代码背后做的其他想法也是受欢迎的.我之前从代码中完成了所以我可以想出来,因为我可以在那里更好地调试它,但我更愿意在xaml中做到这一点.
我在用
<ResourceDictionary Source="DaedalusGraphViewer/ResourceDictionaries/GraphViewerBrushes.xaml" />
Run Code Online (Sandbox Code Playgroud)
在其他地方做同样的事情,所以我看不出我做错了什么.
<Button
Height="50"
VerticalAlignment="Top"
>
<Image Width="50" Height="50" Source="Images/zoominbutton.bmp" Stretch="Fill"/>
</Button>
Run Code Online (Sandbox Code Playgroud)
编辑:仍然没有运气,不知道我做错了什么.
我修改了代码以使用更小的测试用例.
理想情况下,我希望能够从xaml设置图像路径,但是现在我正在尝试代码,只是为了看看我是否可以找出任何可以使其工作的代码.
<Window
x:Class="TestApp.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
Loaded="Window_Loaded"
>
<Canvas x:Name="MainCanvas">
<!--<Image x:Name="ImageSource2" Width="50" Height="50" Source="/DaedalusGraphViewer;component/images.jpg" Stretch="Fill"/>-->
<!--<Image x:Name="imagetest" Stretch="Fill" Width="50">
<Image.Source>
<BitmapImage
DecodePixelWidth="200"
UriSource="/Images/images.jpg"/>
</Image.Source>
</Image>-->
<!--<Image Width="50" Source="../../Images/images.jpg" Stretch="Fill"/>-->
</Canvas>
</Window>
namespace TestApp
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void …Run Code Online (Sandbox Code Playgroud) 我希望能够在visual studio中使用pthread,因为我正在使用它进行调试,并且在这里遵循教程.
http://web.cs.du.edu/~sturtevant/pthread.html
看起来很简单,将.h文件添加到C++ include目录并将.lib文件添加到lib目录.
但是,当检测到.h文件时,我收到一个错误:
Error 1 error LNK2019: unresolved external symbol __imp__pthread_create
Run Code Online (Sandbox Code Playgroud)
我认为这意味着没有正确检测.lib文件.
我想我可以使用它的完整路径将.lib文件添加到Project Properties - > Linker - > Additional Dependencies的lib列表中,如下所示:
D:\Visual Studio\VC\lib\pthreadVC2.lib;kernel32.lib;user32.lib;
Run Code Online (Sandbox Code Playgroud)
不确定将新的lib附加到列表的开头或列表的末尾是否有任何好处,但似乎都不起作用.
在命令行选项卡中,我们可以看到实际运行的命令(我认为):
/OUT:"C:\projects\GTKWavePipe\NamedPipeTest\Debug\NamedPipeTest.exe" /MANIFEST /NXCOMPAT /PDB:"C:\projects\GTKWavePipe\NamedPipeTest\Debug\NamedPipeTest.pdb" /DYNAMICBASE "D:\Visual Studio\VC\lib\pthreadVC2.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL /PGD:"C:\projects\GTKWavePipe\NamedPipeTest\Debug\NamedPipeTest.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\NamedPipeTest.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
Run Code Online (Sandbox Code Playgroud)
有谁知道我可能做错了什么?最终我总是可以在我的cygwin环境中进行调试,但我在那里使用的调试器并不是那么好.
另外,我认为能够将图书馆添加到视觉工作室似乎是一项有用的技能.
我更喜欢使用 let else 语句,因为它消除了代码中的嵌套
let Ok(result) = function_call_that_returns_a_result() else {
return "error message".into();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用 if let、else 或 match 语句,我就可以访问内部的实际错误消息。
if let Err(err) = function_call_that_returns_a_result() {
return format!("Error: {}", error).into();
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以避免使用第二种方法?因为如果我这样使用它,我会得到额外的嵌套。
if let Some(value) = function_call_that_returns_a_result() {
// value is available one level nested
}
Run Code Online (Sandbox Code Playgroud)
其他方法也可供考虑。我想避免必须检查相同的可选两次,否则,我只会检查一次,打印错误,然后在保证它不包含错误后 unwrap() 。然而,这种方法感觉很笨拙。
所以我有这个控制模板,我想要signalnamepanel(只是一个时间标签,我将在它旁边添加一个x轴)只有当项目绑定到Treeview时才会显示.
否则它看起来会很奇怪,因为namepanel会自动浮动.我猜我需要使用某种类型的触发器,但我不确定我会触发什么.
<Style x:Key="{x:Type TreeView}" TargetType="TreeView">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<ScrollViewer
Focusable="False"
CanContentScroll="False"
Padding="4">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="19" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding ElementName=graph_viewer, Path=signal_graph_window_width, Mode=OneWay}" />
</Grid.ColumnDefinitions>
<wpfExp:SignalNamePanel Grid.Column="1"
Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"
MainText="Time"
/>
<wpfExp:SignalGraphAxis Grid.Column="2"
Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"
PenWidth="{Binding ElementName=graph_viewer, Path=GraphPenWidth, Mode=OneWay}"
X_Scale="{Binding ElementName=graph_viewer, Path=X_Scale, Mode=OneWay}"
MaxTimeValue="{Binding ElementName=graph_viewer, Path=_SignalDataViewModel.MaxTimeValue, Mode=OneWay}"
/>
</Grid>
<ItemsPresenter/>
</StackPanel>
</ScrollViewer>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver"
Value="True"> …Run Code Online (Sandbox Code Playgroud) 我只是好奇这是如何工作的.似乎无法找到很多细节.可能在我的搜索中没有正确处理问题.但基本上,编译器如何解析名称?它以什么顺序搜索C#文件开头的using语句中列出的命名空间?
if ( Math.Pow(functionofY, 3.0) > 0.008856 )
{
functionofY = Math.Pow(functionofY, 3);
}
Run Code Online (Sandbox Code Playgroud)
如果我有这个功能,编译器会只计算一次功率吗?或者它是否通过您的代码并找到重复的计算?我觉得编译器有时是一个神奇的黑盒子.
c# ×7
xaml ×4
wpf ×3
c++ ×2
treeview ×2
contextmenu ×1
dictionary ×1
events ×1
gcc ×1
hashtable ×1
javascript ×1
libraries ×1
list ×1
mvvm ×1
namespaces ×1
rust ×1
triggers ×1
uri ×1