小编Ric*_*ard的帖子

隐藏WPF中的网格行

我有一个简单的WPF表单,在表单上Grid声明.这Grid有一堆行:

<Grid.RowDefinitions>
    <RowDefinition Height="Auto" MinHeight="30" />
    <RowDefinition Height="Auto" Name="rowToHide" />
    <RowDefinition Height="Auto" MinHeight="30" />
</Grid.RowDefinitions>
Run Code Online (Sandbox Code Playgroud)

命名行rowToHide包含一些输入字段,我想在检测到我不需要这些字段后隐藏这一行.它很简单,只需设置Visibility = Hidden行中的所有项目,但该行仍占用空间Grid.我尝试设置Height = 0项目,但似乎没有用.

你可以这样想:你有一个表格,在那里你有一个下拉说"付款类型",如果这个人选择"现金",你想要隐藏包含卡详细信息的行.这个隐藏的表单不是一个选项.

wpf grid

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

堆栈和堆分配

我正在研究内存模型,并且正在努力了解一个进程中存在多少堆.

因此,如果我们有一个包含5个线程的进程,我是否正确地说我们有5个堆栈和1个堆?

如果是这样,线程可以访问彼此的堆栈(或者这正是为什么它们有单独的堆栈,以防止损坏),如果只有1个堆,那么显然它们都访问这个堆,因此需要锁定多个线程?我理解正确吗?

c# multithreading

25
推荐指数
2
解决办法
5924
查看次数

SQL Server Profiler:模板未显示/缺失

当我启动SQL Server Profiler并单击"运行"时,它会显示"必须至少选择一个事件".我看到这是由于模板是"空白"(并且没有其他选项),我确信这里应该有一组默认值.

有谁知道他们为什么会消失?以及如何让他们回来?

我正在运行Sql Server 2008.

谢谢

sql-server-2008

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

WPF:获取控件绑定在代码后面的属性

我试图找到一种方法来获取控件绑定的属性(在c#中).

如果我有以下内容:

<dxe:ComboBoxEdit DisplayMember="Name" ItemsSource="{Binding Path=NameOptions, Mode=OneTime}" SelectedItem="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)

我现在正试图获取SelectedItem绑定的位置,即结果应该是"Name".然后在代码中我需要用ViewModel属性做一些事情.问题是我不能只对它进行硬编码,因为它是一种需要处理表单上每个控件的通用方法.

谢谢,理查德

c# wpf binding

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

WPF:绑定到ICommand的TreeViewItem

我正忙着在WPF中创建我的第一个MVVM应用程序.

基本上我遇到的问题是我有一个TreeView(System.Windows.Controls.TreeView),我放在我的WPF窗口,我已经决定将绑定到CommandViewModel项的ReadOnlyCollection,这些项包括一个DisplayString,Tag和RelayCommand.

现在在XAML中,我有了TreeView,并且已成功将我的ReadOnlyCollection绑定到此.我可以查看这个,在UI中看起来一切都很好.

现在的问题是,我需要的RelayCommand到树型视图的命令绑定,但是从我所看到的TreeViewItem没有命令.这是否迫使我在IsSelected属性中甚至在TreeView_SelectedItemChanged方法后面的代码中执行此操作,还是有办法在WPF中神奇地执行此操作?

这是我的代码:

<TreeView BorderBrush="{x:Null}" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch">
<TreeView.Items>
    <TreeViewItem
        Header="New Commands"
        ItemsSource="{Binding Commands}"
        DisplayMemberPath="DisplayName"
        IsExpanded="True">
    </TreeViewItem>
</TreeView.Items>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我很乐意去:

<TreeView BorderBrush="{x:Null}" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch">
<TreeView.Items>
    <TreeViewItem
        Header="New Trade"
        ItemsSource="{Binding Commands}"
        DisplayMemberPath="DisplayName"
        IsExpanded="True"
        Command="{Binding Path=Command}">
    </TreeViewItem>
</TreeView.Items>
Run Code Online (Sandbox Code Playgroud)

有人有一个解决方案,允许我使用我有的RelayCommand基础设施.

谢谢你们,非常感谢!

理查德

c# wpf treeview command icommand

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

何时使用代理而不是接口

根据这篇文章,它说:

在以下情况下使用代理:

  • 一个类可能需要多个方法的实现.

在以下情况下使用接口:

  • 一个类只需要该方法的一个实现.

谁可以给我解释一下这个?

c# delegates interface

6
推荐指数
2
解决办法
2685
查看次数

使用.NET在本地网络中进行消息传递

我需要在我的应用程序中实现某种形式的通信机制,以便将通知/消息从一个应用程序实例发送到所有其他应用程序实例.这是一个正常的情况,有人添加和项目或删除和项目,你想通知其他用户这已发生.

应用程序在客户端上运行并连接到本地网络上的数据库.所以它不像所有客户端访问应用程序的服务器实例.所以从我所知道的我可以使用MessageQueues或某种形式的数据库轮询,其中我有一个存储所有消息的表(不理想).

问题是我需要非常快速地实现这一点,所以遗憾的是不能变得非常复杂但需要最快捷的解决方案.

谢谢您的帮助!

c#

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

为Nullable Enum添加约束

我正在编写一些枚举功能,并具有以下功能:

public static T ConvertStringToEnumValue<T>(string valueToConvert, bool isCaseSensitive)
{
    if (typeof(T).BaseType.FullName != "System.Enum" && typeof(T).BaseType.FullName != "System.ValueType")
    {
       throw new ArgumentException("Type must be of Enum and not " + typeof (T).BaseType.FullName);
    }

    if (String.IsNullOrWhiteSpace(valueToConvert))
      return (T)typeof(T).TypeInitializer.Invoke(null);

    valueToConvert = valueToConvert.Replace(" ", "");              

    if (typeof(T).BaseType.FullName == "System.ValueType")
    {
        return (T)Enum.Parse(Nullable.GetUnderlyingType(typeof(T)), valueToConvert, !isCaseSensitive);
    }

    return (T)Enum.Parse(typeof(T), valueToConvert, !isCaseSensitive);
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

EnumHelper.ConvertStringToEnumValue<Enums.Animals?>("Cat");
Run Code Online (Sandbox Code Playgroud)

我现在想要将T的约束添加到Enum,例如(我从Stackoverflow文章中获得):where T : struct, IConvertible但是我遇到了问题,因为T需要能够获取可以为空的枚举.错误消息说:

类型'Enums.Animals?' 必须是非可空值类型才能在泛型类型或方法中将其用作参数"T"

有没有办法做到这一点,或者我需要依靠运行时检查我在方法内部?

谢谢大家!

c# enums nullable constraints

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

将Null转换为Nullable Enum(Generic)

我正在编写一些枚举功能,并具有以下功能:

public static T ConvertStringToEnumValue<T>(string valueToConvert, 
    bool isCaseSensitive)
{
    if (String.IsNullOrWhiteSpace(valueToConvert))
        return (T)typeof(T).TypeInitializer.Invoke(null);

    valueToConvert = valueToConvert.Replace(" ", "");
    if (typeof(T).BaseType.FullName != "System.Enum" &&
        typeof(T).BaseType.FullName != "System.ValueType")
    {
        throw new ArgumentException("Type must be of Enum and not " +
            typeof (T).BaseType.FullName);
    }

    if (typeof(T).BaseType.FullName == "System.ValueType")
    {
        return (T)Enum.Parse(Nullable.GetUnderlyingType(typeof(T)),
            valueToConvert, !isCaseSensitive);
    }

    return (T)Enum.Parse(typeof(T), valueToConvert, !isCaseSensitive);
}
Run Code Online (Sandbox Code Playgroud)

我现在用以下内容称呼它:

EnumHelper.ConvertStringToEnumValue<Enums.Animals?>("Cat");
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但是,如果我运行这个:

EnumHelper.ConvertStringToEnumValue<Enums.Animals?>(null);
Run Code Online (Sandbox Code Playgroud)

它打破了TypeInitializer为null的错误.

有谁知道如何解决这个问题?

谢谢大家!

c# generics enums

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

通过ref传递List <int>

可能重复:
通过ref传入对象

使用下面的代码,输出将是:

Without:
With:1
Run Code Online (Sandbox Code Playgroud)

码:

    static void Main(string[] args)
    {
        var listWithoutRef = new List<int>();
        WithoutRef(listWithoutRef);
        Console.WriteLine("Without:" + string.Join(" ", listWithoutRef));

        var listWithRef = new List<int>();
        WithRef(ref listWithRef);
        Console.WriteLine("With:" + string.Join(" ", listWithRef));
    }

    static void WithoutRef(List<int> inList)
    {
        inList = new List<int>(new int[] { 1 });
    }

    static void WithRef(ref List<int> inList)
    {
        inList = new List<int>(new int[] { 1 });
    }
Run Code Online (Sandbox Code Playgroud)

通过观察这个,我会说List上有一个List,所以无论如何都是由ref传递的,所以它们应该是一样的吗?我误解了ref关键字吗?还是我错过了别的什么?

c# ref

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