我有以下代码:
object val1 = 1;
object val2 = 1;
bool result1 = (val1 == val2);//Equals false
bool result2 = val1.Equals(val2); //Equals true
Run Code Online (Sandbox Code Playgroud)
那是怎么回事?修复此问题的唯一方法是使用.Equals()方法吗?
我想在wpf UserControl中包装一个Windows窗体控件
<UserControl x:Class="MVVMLibrary.ReportViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ws="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
Height="Auto" Width="Auto">
<Grid>
<WindowsFormsHost Name="Host">
<ws:ReportViewer/>
</WindowsFormsHost>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
请注意,高度和宽度是自动的.
当我在stackpanel或网格控件中将它设置为0并基本上消失时.然后,用户需要调整窗口的大小(由于用户控件说我不需要空间,因此缩小了窗口,谢谢).当用户调整大小时,它会延伸到用户指定的任何内容.
所以我的问题是我做错了什么?如何让我的usercontrol占用所有可用空间而不是不要求任何空间?
我们正在寻找WPF或WinForms应用程序的PDF Viewer控件.
我们的当前实现已经遇到了一些障碍,基本上使用WindowsFormsHost将Adobe Reader activeX控件嵌入到WPF UserControl中.
使用上面的实现,我们不能执行以下操作:
我已经在互联网上搜索了一个没有外部依赖关系的.net控件,发现这个组件是由wpcubed创建的,我玩过它,似乎满足了我们的需求.我的问题是还有其他一些选择吗?
如果有一些类似LGPL的许可开源,我们可以考虑它,但很可能我们想要使用第三方组件,最好是免版税的分发.但我只是在寻找一些我还没有找到的选择.
我需要一些帮助.不知道这是否可行.我想要以下内容:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox TextWrapping="Wrap" MinLines ="5"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
这是一个包含宽度为*的网格列内部的文本框.我希望文本框占用所有宽度(因此*),但是当用户添加文本时,我希望它在到达行尾时(可用空间)进行换行.
目前,上面将给出一个具有整个宽度的文本框,但是当输入文本时,文本框的宽度随着文本的增长而增长.
我知道我可以设置MaxWidth = ?,但是列是*的点是我不知道列的大小是多少.
我想对文本框说"不要长大,无论wpf给你带什么,不要再增加一个像素".
我认为我想要的是不可能的,因为wpf要求控件想要它有多大,当用户添加超出边界的更多文本时,它会请求更多空间并且将其宽度扩展到无穷大.
好的,所以我对WPF有一个普遍的问题.我在ASP.NET MVC上搞砸了一下,在标记中它在你的viewmodel对象上有智能感知,所以你不要错误输入它(我喜欢它).
输入WPF,我喜欢它,我正在使用MVVM方法和一件烦人的事情,我必须做的是确保我正确绑定到我的viewmodel.所以我在我的xaml中键入了一些东西,然后我要么1)如果我懒惰只是运行应用程序并单击2)如果我不是懒惰a)查看我正在使用的控件的当前DataContext.b)转到ViewModel类查看属性c)找到我的属性,然后单击返回到我的视图并确保我拼写正确.
我相信你可以在运行时查看你的跟踪输出是否有错误的绑定,但是在xaml中是否存在允许intellisense的地平线.View需要知道我的ViewModel,所以为什么不在xaml中公开它.
我认为IDE会为我做这件事很好,这意味着,当我输入"{Binding"时,它应该在可视树上找到第一个非null的DataContext并显示属性,让我选择一个并且你在那里有它.
我错过了什么吗?有没有其他选择.任何见解?
编辑:
关于下面的评论,有一种方法可以在设计时设置datacontext,例如
<Window.Resources>
<DesignTimeData:DesignTimeCustomers x:Key="designTimeCustomersDS" />
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
这是博客的一个片段:http: //karlshifflett.wordpress.com/2008/10/11/viewing-design-time-data-in-visual-studio-2008-cider-designer-in-wpf-and- Silverlight的项目/
它所做的就是引用xaml中的一个类.
那么有了这个,设计师就不能利用datacontext上的反射来为你提供该类的所有属性吗?
我需要弄清楚如何在ViewModels之间进行通信.我是MVVM的新手,所以请善待.
这是一个愚蠢的例子
类定义(假设我已经在ParentViewModel中挂钩了Child.PropertyChanged事件):
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是您在资源字典中看到的内容
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
和ChildView的代码隐藏:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
Run Code Online (Sandbox Code Playgroud)
显而易见的问题是,当ChildView被实例化时(通过从DataTemplate中选择),它会创建一个新的ChildViewModel类,而ParentViewModel无法访问它.
那么如何将View的DataContext实例化为导致选择DataTemplate的原始ViewModel?
一个明显的解决方法是将ChildViewModel中的属性混合到ParentViewModel中,但我宁愿将其分开,因为要重用.
我确定答案是微不足道的,我只是想知道它是什么.:)
提前致谢.
好的,所以我想子类ObservableCollection为它添加一个属性.不幸的是,PropertyChanged活动受到保护.基本上我想将它子类SelectedItem化为我可以绑定到我的MVVM WPF应用程序中的列表.
这是我班级的骨架:
public class SelectableList<T> : ObservableCollection<T>
{
public T SelectedItem {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
但我不能做到以下几点:
SelectableList<int> intList = new SelectableList<int>();
intList.PropertyChanged += new PropertyChangedEventHandler(intList_Changed);
Run Code Online (Sandbox Code Playgroud)
因为访问限制.这让我提出了一个更深层次的问题.为什么用户界面可以获得PropertyChanged事件通知(例如Count属性),我不能在代码隐藏中做到这一点?
我的头在旋转,有人可以赐教吗?
好的,我想知道如何
<% using (Html.BeginForm()) { %>
<input type="text" name="id"/>
<% } %>
Run Code Online (Sandbox Code Playgroud)
生产
<form>
<input type="text" name="id"/>
</form>
Run Code Online (Sandbox Code Playgroud)
即如何在最后添加</form>?我查看了codeplex并没有在htmlhelper中找到它.有一个EndForm方法,但上面如何知道调用它?
原因是我想创建一个htmlhelper扩展,但不知道如何在使用结束时关闭.
任何帮助,将不胜感激 :)
我试图得到一个执行以下操作的正则表达式:
我找到了这个正则表达式:
((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])(?!\s).{8,})
Run Code Online (Sandbox Code Playgroud)
它处理上面的第2点和第3点,但是如何将第一个要求添加到上面的正则表达式?
我知道我可以做两个表达式然后上面的那个
\s
Run Code Online (Sandbox Code Playgroud)
但是我想把它全部集中在一起,我尝试做类似的事情,?!\s但我无法让它发挥作用.有任何想法吗?
我需要一些帮助.我正在尝试在移动网页上工作.我正在尝试做的是当用户进行放大/缩小操作时"捕获".也就是说,当他们将两根手指放在屏幕上并将他们的手指分开或闭合在一起时.我看着jquery mobile并没有看到它.
具体来说,我可以将javascript函数附加到移动设备中的捏合/缩放事件吗?
任何帮助将不胜感激.
wpf ×5
c# ×3
mvvm ×3
.net ×1
asp.net-mvc ×1
data-binding ×1
datacontext ×1
equality ×1
equals ×1
grid ×1
html-helper ×1
intellisense ×1
javascript ×1
mobile ×1
pdf ×1
pdf-viewer ×1
regex ×1
syntax ×1
textbox ×1
viewmodel ×1
word-wrap ×1