小编IUn*_*own的帖子

WPF Listbox + Expander事件

我在ListBox的ItemTemplate中有一个Expander.渲染很好.我遇到的问题是我希望扩展和/或选择扩展器时触发ListBox_SelectionChanged事件.MouseDown事件似乎没有冒泡到ListBox.

我需要的是ListBox的SelectedIndex.因为ListBox_SelectionChanged没有被触发,索引是-1,我无法确定选择了哪个项目.

如果用户在展开后单击扩展器的内容,则会触发ListBox_SelectionChanged事件.如果他们只点击扩展器,则不会触发该事件.这让用户感到困惑,因为在视觉上,他们认为他们在实际点击Expander Header时已经点击了该项目.我需要在用户扩展扩展器时选择ListBox项目,因为就用户而言,该项目现在被选中,而实际上并非如此.

有关如何使其工作的任何建议或使用扩展器确定列表框的SelectedIndex的替代方法?

简化代码供参考:

<Window x:Class="WpfApplication3.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">
    <Grid Name="Root">
        <ScrollViewer>
            <ListBox SelectionChanged="ListBox_SelectionChanged" ItemsSource="{Binding}">
                <ItemsControl.ItemTemplate >
                    <DataTemplate>
                        <Border>
                            <Expander>
                                <Expander.Header>
                                    <TextBlock Text="{Binding Path=Name}"/>
                                </Expander.Header>
                                <Expander.Content>
                                    <StackPanel>
                                        <TextBlock Text="{Binding Path=Age}"/>
                                        <TextBlock Text="Line 2"/>
                                        <TextBlock Text="Line 3"/>
                                    </StackPanel>
                                </Expander.Content>
                            </Expander>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ListBox>
        </ScrollViewer>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

简单的绑定类:

public class Person
{
    public string Name {
        get;
        set;
    }

    public int Age {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

创建和填充绑定数据:

private void Window_Loaded(object sender, RoutedEventArgs e) {

    data …
Run Code Online (Sandbox Code Playgroud)

wpf events listbox expander

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

在 Intellij 14 Ultimate 中运行 play 2.3 子项目应用程序

我已经在一个子项目中设置了我的 play 2.3 应用程序(模块在根 intellij 项目中)。sbt compile 工作正常,但我无法弄清楚如何从 intellij 运行 play 子项目。我错过了什么?

我已经像这样设置了我的解决方案文件夹结构(简化):

  • 项目根目录
    • 生成.sbt
    • webapp(包含激活器生成的 play 2.3 应用程序)
      • 应用程序
      • (其他play2.3文件夹)
      • 生成.sbt
    • 数据(包含使用 slick 的 Scala 库)
      • src(和标准子目录)
      • 生成.sbt

这是根项目 build.sbt:

import sbt._
import Keys._
import play.PlayScala

name := "MyApp"

version := "1.0"

lazy val commonSettings = Seq(
  organization := "com.company",
  scalaVersion := "2.11.5"
)

javacOptions ++= Seq("-source", "1.7", "-target", "1.7")

libraryDependencies ++= Seq(
  "com.typesafe.slick" % "slick_2.11" % "2.1.0",
  "org.apache.logging.log4j" % "log4j-api" % "2.1",
  "org.apache.logging.log4j" % "log4j-core" % "2.1",
  "org.slf4j" …
Run Code Online (Sandbox Code Playgroud)

scala intellij-idea sbt playframework-2.0

5
推荐指数
0
解决办法
390
查看次数

Objective-C警告

我对objective-c相当新,并且无法理解以下代码块的警告消息:

void PrintPathInfo() {
    NSString *path = @"~";  
    NSString *message = @"My home folder is: ";

    NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}
Run Code Online (Sandbox Code Playgroud)

这是我为最后一行(调用NSLog)获得的警告消息:

warning: format not a string literal and no format arguments
Run Code Online (Sandbox Code Playgroud)

有人可以澄清一下吗?这是我应该关注的警告信息吗?

谢谢.

warnings objective-c

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

scalatest在intellij 13.1中不起作用

我似乎无法让Intellij 13.1运行我的测试.我创建了一个简单的项目来尝试和隔离问题,但它也没有在那里工作.这是我的设置:

  • Intellij 13.1针对JDK 1.6(正在使用的java库需要)
  • SBT支持scala 2.10项目
  • 最新的scalatest(libraryDependencies + ="org.scalatest"%"scalatest_2.11"%"2.2.1"%"test")

这是sut:

object Calc {
  def add(a: Int, b: Int) = {
    a + b
  }
}
Run Code Online (Sandbox Code Playgroud)

这是测试:

import org.scalatest.FunSuite

class Calc$Test extends FunSuite {
  test("two number should add") {
    assert(Calc.add(2, 5) == 7)
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

错误:scalac:编译时:/Users/test-user/Development/temp/sample/src/test/scala/Calc$Test.scala在阶段:typer库版本:版本2.10.4编译器版本:版本2.10.4重建args:-nobootcp -javabootclasspath:-classpath /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/deploy.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents /Home/lib/dt.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/javaws.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents /Home/lib/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jconsole.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents /Home/lib/management-agent.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/plugin.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk /Contents/Home/lib/sa-jdi.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/System/Library/Java/Jav aVirtualMachines/1.6.0.jdk /内容/班/ classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6. 0.jdk /内容/班/ ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6. 0.jdk /内容/首页/ lib/ext目录/ dnsns.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/localedata.jar:/系统/库/ Java的/ JavaVirtualMachines/1.6.0.jdk /内容/首页/ lib/ext目录/程序(sunjce_provider.jar):/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunpkcs11.jar:/用户/测试用户/开发/温度/样品/目标/阶-2.10 /测试类:/Users/test-user/Development/temp/sample/target/scala-2.10/classes:/Users/test-user/.sbt /boot/scala-2.10.4/lib/scala-library.jar:/Users/test-user/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.2.jar :/Users/test-user/.ivy2/cache/org.scala-lang/scala-reflect/ja RS /斯卡拉 - 反射 - 2.11.2.jar:/Users/test-user/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.2.罐子:/Users/test-user/.ivy2/cache/org.scalatest/scalatest_2.11/bundles/scalatest_2.11-2.2.1.jar:/Users/test-user/.sbt/boot/scala-2.10. 4/lib/scala-reflect.jar:/Users/test-user/.sbt/boot/scala-2.10.4/lib/scala-compiler.jar对typer的最后一棵树:Apply(method ==)symbol:method = = …

scala intellij-idea scalatest intellij-13

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

返回 Unit 的函数的 Scala Option Some/None 习惯用法

我有许多函数对来操作资源,例如:

def loadFile(name: String): Option[String]
def writeFile(name: String, data: String): ???
Run Code Online (Sandbox Code Playgroud)

loadFile当前实现为使用 Option Some/None 返回结果字符串,但是writeFile呢?

loadFile一样,如果writeFile失败,我希望它返回一个包含在一个很好的 Try 或 Option 中的响应,而不是抛出异常或返回 null、Boolean 或响应代码。

有哪些推荐的最佳实践?

def writeFile(name: String, data: String): Try(Unit)
Run Code Online (Sandbox Code Playgroud)

或者

def writeFile(name: String, data: String): Option(Unit)
Run Code Online (Sandbox Code Playgroud)

并且只是测试成功标志?

解决这个问题的最佳 Scala-thonic 方法是什么?

error-handling scala exception-handling

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

Monodroid仿制药不协变?

编辑: 似乎证实协变仿制药尚不支持.要确保它在下一个版本中发布,请发送电子邮件至Xamarin并请求此功能.

以下代码给出了一个错误(在linq语句中).相同的代码在Microsoft clr c#4.0中正常工作.

错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<LinqTest.Person>' to 'System.Collections.Generic.IEnumerable<LinqTest.Entity>'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)

码:

[Activity(Label = "LinqTest", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity {

    protected override void OnCreate(Bundle bundle) {
        base.OnCreate(bundle);

        var names = new List<string> {
                                         "Joe",
                                         "Bob",
                                         "Jim",
                                         "Jane"
                                     };

        IEnumerable<Entity> query =
            from e in names
            select new Person() {Name = e};

        SetContentView(Resource.Layout.Main);

        var button = FindViewById<Button>(Resource.Id.MyButton);

        button.Click += delegate {
                            button.Text = …
Run Code Online (Sandbox Code Playgroud)

generics mono covariance xamarin.android

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

c ++ stl map迭代器输出十六进制值

我有以下代码:

map<StatTypesEnum, ValueHandler*>::const_iterator itr;

for(itr=player1->Stats.begin(); itr!=player1->Stats.end(); itr++)
{
    cout << "Stat: " << itr->first << " Value: " << (ValueHandler*)(itr->second)->getValue() << endl;
}
Run Code Online (Sandbox Code Playgroud)

getValue()方法返回一个int.如果我在迭代器之外输出值,它会以base10十进制显示,但是当我使用迭代器返回值时(如上所示),它显示在base16,hex中.

为了完整起见,以下行显示为base10:

cout << player1->Stats[Power]->getValue() << endl;
Run Code Online (Sandbox Code Playgroud)

我想迭代器显示base10.

谢谢.

c++ iterator stl map

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

使用scalamock返回Try [T]的mocking方法

我知道这可能会遗漏一些非常明显的东西,但我似乎无法模拟出一个返回Try [T]的方法

简化示例:

case class User (first: String, last: String)

// ...

// in Repository class:
  def update[T](id: Int): Try[T] = { ... }

// ...

// in scalatest test using scalamock:
test("a bad id should return a failed update") {
  val mockRepo = mock[Repository]
  (mockRepo.update[User] _).expects(13).returns(???)

  val result = mockRepo.update[User](13)
  result.isSuccess should be (false)
}
Run Code Online (Sandbox Code Playgroud)

如何从模拟方法返回失败的Try [T]?

unit-testing scala mocking scalatest

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

c ++中的静态地图初始化

有许多类似的问题,实际上我从其他几个帖子中编写了以下代码.不幸的是,我仍然有一个错误,我似乎无法破解 - 虽然我做了很多15年前的c ++开发.

我想使用地图制作一个简单的静态查找表.

这是到目前为止的代码(代码css似乎不能很好地呈现它):

enum RegionCodeEnum
{
    One,
    Two,
    Three
};

enum DeviceCodeEnum
{
    AAA,
    BBB,
    CCC
};

class LookupTable
{
    friend class constructor;

    struct constructor 
    {
        constructor() 
        { 
            table[One] = AAA;
            table[Two] = AAA;
            table[Three] = CCC;
        }
    };

    static constructor cons;

public:
    LookupTable(void);

    static DeviceCodeEnum GetDeviceFromRegion(RegionCodeEnum RegionCode);

private:
    static map<RegionCodeEnum, DeviceCodeEnum> table;
};

LookupTable::constructor LookupTable::cons;

LookupTable::LookupTable(void)
{

}

DeviceCodeEnum LookupTable::GetDeviceFromRegion(RegionCodeEnum RegionCode)
{
    return table[RegionCode];
}
Run Code Online (Sandbox Code Playgroud)

从其他地方代码我有这个代码:

DeviceCodeEnum code= LookupTable::GetDeviceFromRegion(One);
Run Code Online (Sandbox Code Playgroud)

我得到的编译错误是:

error LNK2001: unresolved external symbol "private: …
Run Code Online (Sandbox Code Playgroud)

c++ static initialization map

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