小编Jos*_*lin的帖子

在TreeViewItem的所有子项周围添加边框

我有一个TreeView,我正在尝试实现一种样式,允许我使用HierarchicalDataTemplate.在特定节点的所有子节点周围放置边框.我想要的一个例子如下所示:

在此输入图像描述

以下代码是我到目前为止的代码.

<HierarchicalDataTemplate DataType="{x:Type model:Node}" ItemsSource="{Binding Children, Mode=OneWay}">
     <StackPanel>
          <TextBlock Text="{Binding Name}"/>
     </StackPanel>
     <HierarchicalDataTemplate.ItemContainerStyle>
          <Style TargetType="{x:Type TreeViewItem}">
              //what goes in here???
          </Style>
     </HierarchicalDataTemplate.ItemContainerStyle>     
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

我需要添加什么来实现我想要的边框?

wpf treeview xaml hierarchicaldatatemplate

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

TextBlock触发器而不是使用转换器

我想在屏幕上显示一个数字.如果该数字为0,我根本不希望它显示.

<TextBlock Text="{Binding Path=Class.Count}" FontSize="20" FontWeight="Bold">
    <TextBlock.Triggers>
        <DataTrigger Binding="{Binding Path=Class.Count}" Value="0">
            <Setter Property="TextBlock.Text" Value=""/>
        </DataTrigger>
    </TextBlock.Triggers>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

在常规触发器无法解决我的问题后,我尝试了上面的代码.我不想写一个转换器来处理一个特定的数字.有没有办法创建一个触发器,如果​​它是0,将隐藏数字?

编辑:当我尝试使用常规触发器或数据触发器时,我得到一个xaml解析错误,告诉我需要使用事件触发器.

我试图将setter中的值设置为一个数字,以确保具有空值不会导致问题

wpf binding triggers datatrigger mvvm

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

SQL:为什么SYS.COLUMNS显示的列具有与我设置的属性不同的属性

我使用以下列名和数据类型向数据库添加了一个表

"ID"bigInt,"描述"nchar(11)

如果我检查表的设计视图,列的数据类型就像我设置它们一样.

如果我编写的查询将从SYS.COLUMNS获取该表中的列,则列属性不同,例如(描述的max_length为22,而不是11)

有人可以解释为什么会这样吗?

我正在使用Microsoft SQL Server企业版(64位),如果这是相关的.

sql sql-server

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

我可以创建一个 SqlDataReader 并为其提供值而不必从另一个对象返回一个 SqlDataReader,例如 SqlCommand.ExecuteReader()

我正在为我的数据访问层编写单元测试。为了实现这一点,我为 SqlCommand (ISqlCommand) 创建了一个包装器,以便我可以模拟它的功能。

ISqlCommand command = _connection.GetSqlCommand(sqlCommand);
Run Code Online (Sandbox Code Playgroud)

在我正在测试的方法之一中,调用了 SqlCommand 的 ExecuteReader 方法,我必须返回一个 SqlDataReader。

SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleRow);
Run Code Online (Sandbox Code Playgroud)

在这个相同的方法 reader.Read 将被调用

if (reader.Read())
{
    someVariable = reader.GetString(1);
}
Run Code Online (Sandbox Code Playgroud)

我想要的是能够从模拟的 command.ExecuteReader() 返回一个 SqlDataReader 对象,并提供一个值供我阅读。可以做到吗?似乎 SqlDataReader 只能从正在运行并返回 SqlDataReader 的实际 SqlCommand.ExecuteReader 实例化。待测试的完整相关代码。

ISqlCommand command = _connection.GetSqlCommand(sqlCommand);

using (command)
{
    SqlDataReader reader =  command.ExecuteReader(CommandBehavior.SingleRow);

    if (reader.Read())
    {
        dbVersion = reader.GetString(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:清除我在问什么。SqlDatareader 没有公共构造函数。据我所知,我无法使用该类编写任何测试,因为我无法在不使用 SqlCommand 对数据库进行合法调用的情况下实例化它。即使尝试创建 SqlDataReaderWrapper 的接口也无济于事,因为问题是一样的。我不是要编写集成测试(对数据库进行实际调用),因此 DataReader 似乎无法按原样进行测试。我的问题是,在这种情况下,我可以做些什么来将值放入 SqlDataReader 中?

.net c# unit-testing moq mocking

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

IOException创建文件然后尝试访问它时

可能重复:
使用File.Create()后其他进程正在使用的文件

我有一个方法将文本附加到文件.在我附加文本之前,我检查文件是否存在.如果它不存在我创建它然后继续如下所示.

if(!File.Exists(_someFile))
    File.Create(_someFile);

using (StreamWriter file = File.AppendText(_someFile))
{          
    file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)

如果文件存在则没有问题.该文件将被更新.如果该文件不存在并且它被创建,则在使用'using'的行上抛出IO异常,表明另一个进程正在使用该文件.我尝试使用进程资源管理器来找出使用该文件的内容,结果是"不存在的进程".有谁知道发生了什么以及如何解决这个问题?

编辑:问题解决了

我第一次搜索时在这个网站上找不到关于我的问题的问题.我一发布问题,就在右边的"相关问题"中看到了确切的问题.链接到解决方案:使用File.Create()后由另一个进程使用的文件 很抱歉发布了一个副本.我的问题解决了.

c# file-io

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

(WPF MVVM)如何从ViewModel中的集合向View添加用户控件

我想知道如何从集合中将用户控件添加到窗口中.目前我将我的视图文件夹中的控件添加到网格单元格中.

<views:MyControl Grid.Column="0" Grid.Row="0" Margin="10"/>
Run Code Online (Sandbox Code Playgroud)

我的视图模型中有一个ObservableCollection,它存储了一组用户控件.在我看来,我想从该集合中取一个控件并将其放入我的网格单元格中.我怎样才能像上面那样在网格中添加控件,但是从我的收藏中添加?

例如,{绑定路径控件.[1]

wpf xaml user-controls view mvvm

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