小编dav*_*soa的帖子

从WPF ListBox中的单个列表中显示多个类型?

我有一个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)

c# data-binding wpf itemtemplate

11
推荐指数
2
解决办法
8990
查看次数

安装程序编译期间打开文件时出错

在运行脚本来创建NSIS安装程序时,我收到一个我无法弄清楚的错误.该脚本复制创建安装程序所需的文件,然后调用makensis以生成setup.exe.

在编译期间makensis,我在尝试包含之前复制的目录结构时遇到错误makensis.

错误是: File: failed opening file "..\..\..\My\Long\Path\Name\To\File.ext"

它在与File /r用于包含目录结构的命令相距5个目录的特定文件上可靠地失败.总路径长度为180个字符,因此不会太长.

即使在重新启动或删除并重新创建整个目录结构后,此错误仍会存在.更糟糕的是,它在另一台机器上工作正常.

我已经使用Process Monitor来监视目录中文件的使用情况,并且在复制完成后没有任何东西打开文件.

知道如何解决这个问题吗?

nsis

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

使用C#将文件/文件夹添加到程序文件x86文件夹

我正在尝试在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# file-permissions program-files

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

C#需要在多行texbox中使用enter键向下移动一行,而不是离开texbox

在C#中,我有一个多行文本框,用户可以输入案例注释.然而,当他们进入文本框并按Enter键时,它会离开文本框并跳转到下一个字段,如选项卡按钮.任何方法来克服这种行为并使返回键向下移动?我不需要在整个表单上禁用返回键行为,只需在一个多行文本框中.

谢谢.

c# textbox multiline winforms

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

使用ExecuteReader循环遍历行

我很难过,我试图从数据库中填充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)

c# sqldatareader

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