我有一个简单的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项目,但似乎没有用.
你可以这样想:你有一个表格,在那里你有一个下拉说"付款类型",如果这个人选择"现金",你想要隐藏包含卡详细信息的行.这个隐藏的表单不是一个选项.
我正在研究内存模型,并且正在努力了解一个进程中存在多少堆.
因此,如果我们有一个包含5个线程的进程,我是否正确地说我们有5个堆栈和1个堆?
如果是这样,线程可以访问彼此的堆栈(或者这正是为什么它们有单独的堆栈,以防止损坏),如果只有1个堆,那么显然它们都访问这个堆,因此需要锁定多个线程?我理解正确吗?
当我启动SQL Server Profiler并单击"运行"时,它会显示"必须至少选择一个事件".我看到这是由于模板是"空白"(并且没有其他选项),我确信这里应该有一组默认值.
有谁知道他们为什么会消失?以及如何让他们回来?
我正在运行Sql Server 2008.
谢谢
我试图找到一种方法来获取控件绑定的属性(在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属性做一些事情.问题是我不能只对它进行硬编码,因为它是一种需要处理表单上每个控件的通用方法.
谢谢,理查德
我正忙着在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基础设施.
谢谢你们,非常感谢!
理查德
我需要在我的应用程序中实现某种形式的通信机制,以便将通知/消息从一个应用程序实例发送到所有其他应用程序实例.这是一个正常的情况,有人添加和项目或删除和项目,你想通知其他用户这已发生.
应用程序在客户端上运行并连接到本地网络上的数据库.所以它不像所有客户端访问应用程序的服务器实例.所以从我所知道的我可以使用MessageQueues或某种形式的数据库轮询,其中我有一个存储所有消息的表(不理想).
问题是我需要非常快速地实现这一点,所以遗憾的是不能变得非常复杂但需要最快捷的解决方案.
谢谢您的帮助!
我正在编写一些枚举功能,并具有以下功能:
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"
有没有办法做到这一点,或者我需要依靠运行时检查我在方法内部?
谢谢大家!
我正在编写一些枚举功能,并具有以下功能:
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的错误.
有谁知道如何解决这个问题?
谢谢大家!
可能重复:
通过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关键字吗?还是我错过了别的什么?