我在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) 我已经在一个子项目中设置了我的 play 2.3 应用程序(模块在根 intellij 项目中)。sbt compile 工作正常,但我无法弄清楚如何从 intellij 运行 play 子项目。我错过了什么?
我已经像这样设置了我的解决方案文件夹结构(简化):
这是根项目 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) 我对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)
有人可以澄清一下吗?这是我应该关注的警告信息吗?
谢谢.
我似乎无法让Intellij 13.1运行我的测试.我创建了一个简单的项目来尝试和隔离问题,但它也没有在那里工作.这是我的设置:
这是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 = = …
我有许多函数对来操作资源,例如:
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 方法是什么?
编辑: 似乎证实协变仿制药尚不支持.要确保它在下一个版本中发布,请发送电子邮件至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) 我有以下代码:
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.
谢谢.
我知道这可能会遗漏一些非常明显的东西,但我似乎无法模拟出一个返回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]?
有许多类似的问题,实际上我从其他几个帖子中编写了以下代码.不幸的是,我仍然有一个错误,我似乎无法破解 - 虽然我做了很多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) scala ×4
c++ ×2
map ×2
scalatest ×2
covariance ×1
events ×1
expander ×1
generics ×1
intellij-13 ×1
iterator ×1
listbox ×1
mocking ×1
mono ×1
objective-c ×1
sbt ×1
static ×1
stl ×1
unit-testing ×1
warnings ×1
wpf ×1