小编luk*_*uke的帖子

9
推荐指数
3
解决办法
4万
查看次数

过滤使用嵌套的xaml数据模板显示的分层对象

我无法过滤嵌套的xaml模板中显示的分层数据.

我有一个ObservableCollection<Foo> Foos,我在XAML中显示.

让我们说Foo看起来像:

class Foo
{
    public ObservableCollection<Bar> Bars;
}

class Bar
{
    public ObservableCollection<Qux> Quxes;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下xaml显示Foos:

<Grid>
    <Grid.Resources>
        <CollectionViewSource x:Key="MyCVS" Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}, Path=DataContext.UnifiedSymbols}" Filter="MyCVS_Filter" />

        <DataTemplate x:Key="NestedTabHeaderTemplate">
            <TextBlock Text="{Binding Path=Name}"/>
        </DataTemplate>
        <DataTemplate x:Key="NestedTabContentTemplate">
            <ListBox ItemsSource="{Binding Path=Quxes}" DisplayMemberPath="Name"/>
        </DataTemplate>

        <DataTemplate x:Key="TopLevelTabHeaderTemplate">
            <TextBlock Text="{Binding Path=Name}"/>
        </DataTemplate>
        <DataTemplate x:Key="TopLevelTabContentTemplate">
            <TabControl ItemsSource="{Binding Path=Bars}"
                        ItemTemplate="{StaticResource NestedTabHeaderTemplate}" 
                        ContentTemplate="{StaticResource NestedTabContentTemplate}"
                        />
        </DataTemplate>
    </Grid.Resources>

    <TabControl ItemSource="{Binding correct binding for my control's collection of Foos}"
                ItemTemplate="{StaticResource TopLevelTabHeaderTemplate}" 
                ContentTemplate="{StaticResource TopLevelTabContentTemplate}"
                            x:Name="tabControl"
                /> …
Run Code Online (Sandbox Code Playgroud)

c# xaml binding filtering datatemplate

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

使用带有Angular.js的Twitter Bootstrap时是否需要jQuery?

jQLite(使用AngularJS构建)是否足以在Twitter Bootstrap中执行javascript功能(如下拉列表)?

docs.angularjs说:

来自Stop的DOM操作尝试使用jQuery来修改控制器中的DOM.真.这包括添加元素,删除元素,检索其内容,显示和隐藏它们.使用内置指令,或在必要时编写自己的指令来进行DOM操作.请参阅下文有关复制功能的信息.

twitter-bootstrap angularjs

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

您是否在每个.hpp/.cpp文件的顶部添加信息?

在创建新的C++标头/源文件时,您将哪些信息添加到顶部?例如,您是否添加了日期,您的姓名,文件说明等?您是否使用结构化格式来获取此信息?

例如

// Foo.cpp - Implementation of the Foo class
// Date: 2008-25-11
// Created by: John Smith
Run Code Online (Sandbox Code Playgroud)

我认识的一个团队将CVS提交消息嵌入到每个文件的脚下,但我不确定我是否想要走这么远......

c++ coding-style

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

在STL容器内转让所有权?

是否可以将矢量内容的所有权从一个向量转移到另一个向量?

vector<T> v1; 
// fill v1
vector<T> v2 = OvertakeContents(v1);
// now v1 would be empty and v2 would have all the contents of v1
Run Code Online (Sandbox Code Playgroud)

具有拼接功能的列表是可能的.对于整个矢量,这应该在恒定时间内是可能的.

如果不是那么为什么不呢?

c++ stl ownership

5
推荐指数
2
解决办法
636
查看次数

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

链表添加到尾部,混乱

Visual Studio 2008 C

我无法理解的这个链表是在if语句的else部分添加尾部.

当分配头部和尾部时,node_temp的内存地址同时指向tail和head都指向相同的内存位置.

但是,在else部分中,头部实际上仍然指向尾部.有些东西我无法解释,也不了解其他部分?

我希望有人能为我解释得更好.

static struct convert_temp
{
    size_t cel;
    size_t fah;
    struct convert_temp *next;
} *head = NULL, *tail = NULL;

/** Add the new converted temperatures on the list */
void add(size_t cel, size_t fah)
{
    struct convert_temp *node_temp = NULL; /* contain temp data */

    node_temp = malloc(sizeof(*node_temp));

    if(node_temp == NULL)
    {
        fprintf(stderr, "Cannot allocate memory [ %s ] : [ %d ]\n",
            __FUNCTION__, __LINE__);
        exit(0);
    }

    /* Assign data */
    node_temp->cel = …
Run Code Online (Sandbox Code Playgroud)

c linked-list

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

直接从指针转换为模板函数?

我试图获取一个指向函数模板实例的指针并将其转换为void*:

#include <stdio.h>

void plainFunction(int *param) {}

template <typename T>
void templateFunction(T *param) {}

int main() {
    void *addr1=&plainFunction; //OK
    void *addr2=&templateFunction<int>; //Compile error
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误(在Visual Studio 2008中)

main.cu(10) : error C2440: 'initializing' : cannot convert from 'void (__cdecl *)(T *)' to 'void *'
Context does not allow for disambiguation of overloaded function
Run Code Online (Sandbox Code Playgroud)

为什么会这样?功能templateFunction(对于具体类型T=int)不会过载.可以减去我所引用的函数的哪个实例.

如果我用以下内容替换erroneus行:

void (*foo)(int*)=&templateFunction<int>;
void *addr2=foo;
Run Code Online (Sandbox Code Playgroud)

它编译没有问题.

谢谢!


更新:

当正常指针void*被虚拟函数指针替换时void(*)(),正如James(谢谢)建议的那样,它会使错误消失:

void (*addr1)()=(void(*)())&plainFunction;
void (*addr2)()=(void(*)())(&templateFunction<int>);
Run Code Online (Sandbox Code Playgroud)

但是,如果错误是通过将函数指针转换为普通指针引起的,则编译器应该在两种情况下都会抱怨.但它没有,所以我继续假设它至少对于这个编译器来说是正确的.如果我没有记错的话,标准只是说,函数指针不具有像普通指针来表示,但它并没有禁止这一点.

c++ visual-c++

5
推荐指数
2
解决办法
1494
查看次数

在C++ 11中将成员函数指定为回调

我有以下内容:

typedef std::function<bool (const std::string&)> SomethingCoolCb;

class ClassA
{
public:
    void OnSomethingCool(const SomethingCoolCb& cb)
    {
        _cb = cb;
    }

private:
    SomethingCoolCb _cb;
};

class ClassB
{
public:
    ClassB();
    bool Juggle(const std::string& arg);

private:
    ClassA _obj;
};
Run Code Online (Sandbox Code Playgroud)

我想指定ClassB :: Juggle()成员函数作为ClassB :: _ obj的回调.在C++ 11中这样做的正确方法是(在ClassB的构造函数中):

ClassB::ClassB()
{
    _obj.OnDoSomethingCool(
        [&](const std::string& arg) -> bool
        {
            return Juggle(arg);
        });
}
Run Code Online (Sandbox Code Playgroud)

据我所知,编译器将使用上面的lambda代码生成一个std :: function对象.因此,当调用回调时,它将调用std :: function :: operator()成员,然后它将调用ClassB :: Juggle()而不是直接调用ClassB :: Juggle().除非我误解了封面下发生的事情,否则一切似乎都有点低效.有没有更好的办法?

c++ lambda c++11

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

如何在小册子中将圆形标记放在前面

我有两个circlemarkers,A和B,在同一个地方

演示

当我选择标记A时,我希望标记B移动到前面,反之亦然.

javascript leaflet

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