我有一个ObservableCollection<Object>包含两种不同类型.
我想将此列表绑定到ListBox并为遇到的每种类型显示不同的DataTemplate.我无法弄清楚如何根据类型自动切换数据模板.
我试图使用DataTemplate的DataType属性并尝试使用ControlTemplates和DataTrigger,但无济于事,或者它没有显示,或者它声称它找不到我的类型......
示例尝试如下:
我现在只有一个数据模板连接到ListBox,但即使这样也行不通.
XAML:
<Window x:Class="WpfApplication1.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">
<Window.Resources>
<DataTemplate x:Key="PersonTemplate">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</DataTemplate>
<DataTemplate x:Key="QuantityTemplate">
<TextBlock Text="{Binding Path=Amount}"></TextBlock>
</DataTemplate>
</Window.Resources>
<Grid>
<DockPanel>
<ListBox x:Name="MyListBox" Width="250" Height="250"
ItemsSource="{Binding Path=ListToBind}"
ItemTemplate="{StaticResource PersonTemplate}"></ListBox>
</DockPanel>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
代码背后:
public class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
}
public class Quantity
{
public int Amount { get; set; }
public Quantity(int amount)
{
Amount = …Run Code Online (Sandbox Code Playgroud) 在运行脚本来创建NSIS安装程序时,我收到一个我无法弄清楚的错误.该脚本复制创建安装程序所需的文件,然后调用makensis以生成setup.exe.
在编译期间makensis,我在尝试包含之前复制的目录结构时遇到错误makensis.
错误是: File: failed opening file "..\..\..\My\Long\Path\Name\To\File.ext"
它在与File /r用于包含目录结构的命令相距5个目录的特定文件上可靠地失败.总路径长度为180个字符,因此不会太长.
即使在重新启动或删除并重新创建整个目录结构后,此错误仍会存在.更糟糕的是,它在另一台机器上工作正常.
我已经使用Process Monitor来监视目录中文件的使用情况,并且在复制完成后没有任何东西打开文件.
知道如何解决这个问题吗?
我正在尝试在32位Program Files文件夹中创建一个文件目录(文件夹),以存储用户将在程序中创建的数据.但是,当我尝试这样做时,它一直说访问被拒绝.反正是否允许程序访问32位程序文件文件夹并向其添加后续文件夹和文件?以下是我的代码,由于没有权限而产生运行时错误.
string mainDirectory=Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)+"\\UKC Trial Reporter Files";
if (!Directory.Exists(mainDirectory))
{
Directory.CreateDirectory(mainDirectory);
}
Run Code Online (Sandbox Code Playgroud) 在C#中,我有一个多行文本框,用户可以输入案例注释.然而,当他们进入文本框并按Enter键时,它会离开文本框并跳转到下一个字段,如选项卡按钮.任何方法来克服这种行为并使返回键向下移动?我不需要在整个表单上禁用返回键行为,只需在一个多行文本框中.
谢谢.
我很难过,我试图从数据库中填充5个文本框,而不是所有5个文本框都会有数据.
例:
ID | ItemID | QTYPE
1 | 10 | 2盒
2 | 10 | 6盒
3 | 11 | 1个案例
在这个例子中,它将填充QuantityType1TxtBox 2 Boxes和QuantityType2TxtBox 6 Boxes,而其他三个文本框留空.
我尝试运行此代码时得到的以下错误是:索引超出了数组的范围.
此行发生此错误:QuantityType2TxtBox.Text = rdr.GetString(1);
SqlCommand cmd = new SqlCommand(@"SELECT QType FROM InventoryQType
WHERE ItemID = '" + itemID + "'", conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
QuantityType1TxtBox.Text = rdr.GetString(0);
QuantityType2TxtBox.Text = rdr.GetString(1);
QuantityType3TxtBox.Text = rdr.GetString(2);
QuantityType4TxtBox.Text = rdr.GetString(3);
QuantityType5TxtBox.Text = rdr.GetString(4);
}
rdr.Close();
Run Code Online (Sandbox Code Playgroud)