问题列表 - 第7447页

在WPF中,如何在右键单击光标下选择树视图项?

在WPF中,当我右键单击树视图项时,我希望在显示上下文菜单之前选择/激活它.

这听起来很简单,但是包含hierachicalDataTemplate会使事情变得复杂.

我有以下树视图:

<TreeView 
            x:Name="trv"
            ContextMenu="{StaticResource contextMenu}"
            ItemTemplate="{StaticResource treeHierarchicalDataTemplate}"
            ItemsSource="{Binding Source={StaticResource meetingItems}}" >

            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="trv_PreviewMouseRightButtonDown"/>
                    <Setter Property="IsExpanded" Value="True"></Setter>
                </Style>
            </TreeView.ItemContainerStyle>
        </TreeView>
Run Code Online (Sandbox Code Playgroud)

这是我的事件处理程序......

private void trv_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    TreeViewItem item = sender as TreeViewItem;
    if (item != null)
    {
        item.Focus();
        e.Handled = true;
    }

}
Run Code Online (Sandbox Code Playgroud)

请注意我如何添加上面的EventSetter.这个ALMOST有效.但它只选择根级树视图节点(即我右键单击的节点的根父节点).这可能是因为我的分层数据模板?此模板可以包含相同类型的子项.

这是我的分层数据模板......

<HierarchicalDataTemplate x:Key="treeHierarchicalDataTemplate" 
                          ItemsSource="{Binding Path=ChildMeetingItems}">
    <HierarchicalDataTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=Red}" Value="True">
            <Setter TargetName="img" Property="Image.Source" Value="pack://siteoforigin:,,,/images/bookRed.png"></Setter>
        </DataTrigger>
    </HierarchicalDataTemplate.Triggers>
    <StackPanel 
        x:Name="treeViewItemPanel"
        Background="Transparent"
        Orientation="Horizontal">
        <Image Width="16" Height="16"  x:Name="img" Margin="0,0,4,0" Source="pack://siteoforigin:,,,/images/bookGreen.png"></Image>
        <TextBlock Foreground="DarkGray" …
Run Code Online (Sandbox Code Playgroud)

wpf treeview treeviewitem

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

如何阻止EnumWindows无限运行win32

代码一直在运作.不知怎的,我设法让Visual C++ Express没有达到最终return语句的断点,它似乎永远运行.

在下面的示例代码中,EnumWindows无限枚举.如何在枚举所有窗口后使其停止.

#include <Windows.h>

BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) {
    TCHAR buff[255];

    if (IsWindowVisible(hWnd)) {
        GetWindowText(hWnd, (LPWSTR) buff, 254);
        printf("%S\n", buff);
    }
    return TRUE;
}

int _tmain(int argc, _TCHAR* argv[]) {
    EnumWindows(EnumWindowsProc, 0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi

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

JQuery自动完成验证选定的值

我们正在使用的内容即自动完成的jQuery插件乔恩Zaefferer,并试图验证有效的选项输入.

该插件具有result()事件,该事件在进行选择时触发.这没关系,但是当用户点击时我需要检查文本框中的值.所以我们尝试了.change()和.blur()事件,但它们都存在问题:当你点击结果div中的一个条目('suggest'列表)时,.change()和.blur()事件触发,这是在插件向文本框写入值之前,因此此时无需验证.

有人可以帮我配置事件,所以每当有人点击,但不是在结果框中我可以检查框中的有效值.如果这是错误的方法,请通知我正确的方法.我们最初使用此插件是因为它的'mustMatch'选项.此选项似乎并不适用于所有情况.很多时候,有效的条目将被写入文本框,而被插件清除为无效,我无法确定原因.

基本代码示例:

<html>
<head>
<title>Choose Favorite</title>
<script language="JavaScript" src="jquery-1.3.2.min.js" ></script>
<script language="JavaScript" src="jquery.autocomplete.min.js" ></script>
<script>
    $(".suggest").autocomplete("fetchNames.asp", {
        matchContains:false,
        minChars:1, 
        autoFill:false,
        mustMatch:false,
        cacheLength:20,
        max:20
    });

    $(".suggest").result(function(event, data, formatted) {
        var u = this;
        // Check value here

    });

    /* OR */

    $(".suggest").change(function(me) {
        //check value here
    });

</script>
</head>
<body>
    <label for="tbxName">Select name (I show 10):</label><br />
    <INPUT type="text" id="tbxName" name="tbxName" class="suggest"><br />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

jquery autocomplete event-handling

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

如何更改SQL Server Compact Edition表模式中的列顺序?

我正在使用Visual Studio 2008来设计SQL Server Compact Edition数据库(*.sdf).我不得不更改我的一个表格的架构,添加一个新列.

我想将新列从底部"移动"到字段列表中的不同位置.我如何在Visual Studio设计器中执行此操作?

编辑:我知道从纯粹的技术角度来看,列的顺序无关紧要.我正在为一个应用程序进行原型设计,所以我必须多次更改模式.例如,如果我必须更改主键,那么在最后使用最重要的列会"丑陋".我认为,其他看待代码的开发人员会感到困惑.这是一个美学问题.

database visual-studio-2008 sql-server-ce

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

如果我有Perl 4,如何选择字符串?

我正在我的个人计算机上编写一个脚本,该脚本连接到远程服务器.我认为远程服务器安装了Perl 4.0或更低版本,这就是它无法识别相同的原因.有chomp命令的替代方案吗?

syntax perl perl4

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

填充增强矢量或矩阵

是否有单表达式方法将标量分配给boost矩阵或向量的所有元素?我正试图找到一种更紧凑的表达方式:

boost::numeric::ublas::c_vector<float, N> v;
for (size_t i=0; i<N; i++) {
    v[i] = myScalar;
 }
Run Code Online (Sandbox Code Playgroud)

以下不起作用:

boost::numeric::ublas::c_vector<float, N> 
   v(myScalar, myScalar, ...and so on..., myScalar);

boost::numeric::ublas::c_vector<float, N> v;
v = myScalar;
Run Code Online (Sandbox Code Playgroud)

c++ boost expression ublas

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

C++中字符串赋值的分段错误

看看这个示例函数:

RuntimeConfiguration* conf_rt_conf() {

    RuntimeConfiguration *conf;
    conf = new RuntimeConfiguration();
    conf->arch_path="./archive";
    conf->err_log="./err_log";
    conf->fail_log="./fail_log";
    conf->msg_log="./msg_log";
    conf->save="html, htm, php";
    conf->ignore="jpg, gif";
    conf->cookies="";

    return conf;
}
Run Code Online (Sandbox Code Playgroud)

这里的一切都很好,但是当我运行这样的东西:

DatabaseInput** conf_db_input() {

    DatabaseInput **db_input;
    db_input=(DatabaseInput **)malloc(NUMB_SITES*sizeof(DatabaseInput *));
    for (int i=0;i<NUMB_SITES;i++) db_input[0]= new DatabaseInput();

    db_input[0]->full_name="ABCNews";
    db_input[0]->alias="abcn";
    db_input[0]->prefix="/eng";

    db_input[1]->full_name="Rzeczpospolita";
    db_input[1]->alias="rp";
    db_input[1]->prefix="/pol";

    return db_input;
}
Run Code Online (Sandbox Code Playgroud)

我在第一次分配时遇到分段错误.它可能与为此结构分配的固定内存块有关.如何让它正常工作?

c++ segmentation-fault

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

vCalendar - 显示为(忙/闲/暂定/不在办公室)

我向Outlook发送了一条vCalendar消息,导致Outlook日历中出现了一个新事件.如何设置"显示为"字段?(忙/闲/暂定/离任)

outlook calendar vcalendar

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

Objective-c Iphone如何设置属性的默认值

您好我在ViewController.h中有以下代码:

#import <UIKit/UIKit.h>

@interface CalcViewController : UIViewController {
    NSNumber* result;
    NSString* input;
    //NSString* input = @"";

    IBOutlet UITextField* display;
}

@property (retain) NSNumber* result;
@property (retain) NSString* input;
@property (nonatomic, retain) UITextField* display;

@end
Run Code Online (Sandbox Code Playgroud)

问题是我想在输入中附加一个字符串,但是当它仍为空时这是不可能的.这就是为什么我想将输入的默认值设置为@"".但是我在哪里放这个代码.

我知道一个可能的解决方案,你把它放在一个默认的构造函数中.但我不知道在哪个文件中放这个.我应该在哪里打电话.

遗憾的是,我对C的理解有限,并且意识到也许.h文件不是正确的地方.

如果您需要,项目类型是基于视图的应用程序.

希望你能帮忙.

iphone constructor properties objective-c

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

如何在C#静态和非静态方法之间做出决定?

[编辑]

我的原始问题是"为什么要在静态和非静态之间做出决定?两者都是一样的......"

不幸的是,它被编辑成一个C#特定的问题,我真的想避免.

所以,让我做一些补充:

当我说接口时,我不是指C#-keyword接口,而是我理解的东西,比如C++接口:一组定义良好的函数来操作我的对象.当说削弱我的界面时,我的意思是我有不同的功能(静态/非静态)做同样的事情.当有不同的功能来做同样的事情时,我的界面不再明确定义.

所以,正如看门人Bob发布的那样,我可以实现一个Validate()函数

Document.Validate(myDocumentObject);    
Run Code Online (Sandbox Code Playgroud)

但是也

myConcreteDocumentObject.Validate();
Run Code Online (Sandbox Code Playgroud)

要返回我的Copy() - 示例可以实现Copy()之类的

myConcreteDocument.Copy(toPath);
Run Code Online (Sandbox Code Playgroud)

但是也

Document.Copy(myConcreteDocumentObject, toPath)
Run Code Online (Sandbox Code Playgroud)

要么

Document.Copy(fromPath, toPath)
Run Code Online (Sandbox Code Playgroud)

当我想到一个文件夹,其中包含属于我的Document的所有文件(在这种情况下,我不依赖于具体的实例 - 但我依赖于其他东西:)).

一般来说,我说的是静态方法,而不是静态类(对不起,如果我忘了推荐).

但正如Anton Gogolev所说,我认为我的文档课不是一个很好的例子而且没有很好的设计,所以我想我必须看看单一责任原则.

我还可以实现某种与DocumentClass一起运行的ManagerClass:

例如:

myDocumentManagerObject.Copy(myConcreteDocumentObject, toPath);
Run Code Online (Sandbox Code Playgroud)

要么

myDocumentManagerObject.Copy(myConcreteDocumentObject, toPath);
Run Code Online (Sandbox Code Playgroud)

但是,如果我参考方法1)我倾向于创建自己执行任务的对象,而不是使用我的DocumentObject 执行某些操作的其他对象(DocumentManager).

(我希望这不会采取关于OOP的宗教讨论的方向;).)

[/编辑]


旧版:

起初这似乎是一个非常基本的问题,比如"何时使用静态方法,何时不使用",但这是我偶尔遇到的问题(我很难描述真正的问题是什么;也许只是为了得到原因(不)使用1)或为什么(不)使用2)).

(虽然我使用的是C#-Syntax但这不是C#限制的问题)

在OOP中,有两种处理对象的方法(以及其他方法):

1)如果我想要我的对象做某事,我只是告诉他这样做:

myConcreteObject.DoSomething();
Run Code Online (Sandbox Code Playgroud)

这就像和一个对象交谈一样.

2)或者如果你是静态方法的粉丝:

ObjectClass.JustDoIt();
Run Code Online (Sandbox Code Playgroud)

在某种程度上,我认为静态函数只是"感觉"更好.所以我倾向于经常使用静态方法(独立于具体实例 - 独立性总是好事).

所以,在设计课程时,我经常要决定是采用方法1)还是方法2):

想象一下,你有一个"文档"类,它应该代表一个应该保存到数据库中的文档:

一个文件

  • 由来自文件系统的一个或多个图像文件组成(这些文件成为单个文档页面)
  • 有类似参考书目的字段 - 用户可以添加有关文档的信息的字段 - 保存到额外的文件中
  • 并且应该有一些操作,如Copy(),AddPage(),RemovePage()等.

现在我遇到了几种创建这个类的方法:

//----- 1) non static approach/talking to objects -----
Document newDocument = new Document();

// Copy document to x (another …
Run Code Online (Sandbox Code Playgroud)

c# oop class-design

14
推荐指数
4
解决办法
9827
查看次数