我试图从"使用C#进行.NET域驱动设计"中找到一个示例,其中包含一个代码示例,您可以在其中看到声明了某些类型的属性DelegateCommand.
现在,我已经尝试了谷歌搜索,但我无法在MSDN上的任何地方找到它的参考(实际上,我发现了这篇文章,但不是DelegateCommand文章本身).
这DelegateCommand部分内容是WPF或者它只是书中创造的内容吗?
如果它是WPF(或任何其他MS产品)的一部分,那么汇编/命名空间是什么?
具体来说,我有一个打开非模态子窗口的按钮.主窗口中的某些东西会在打开时将焦点从子窗口中移开.
完全通用的方法是注释掉部分代码,直到问题消失.我正在寻找更快的方法.
您能否提供一个示例,了解如何实现ICommandSource界面.因为我希望我的UserControl,没有能力在xaml中指定命令,才能拥有此功能.并且能够在用户点击时处理该命令CustomControl.
我有一个通用控件,它根据ViewModel中的type属性显示一个编辑器.目前它已经实现使用Control,ControlTemplate并且DataTrigger像这样 -
<Control
x:Name="MainControl"
Grid.Column="1"
TargetUpdated="OnTargetUpdated">
<Control.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=EditorType}"
Value="{x:Static view:EditorType.Bool}">
<Setter
Property="Control.Template"
Value="{StaticResource boolTemplate}" />
</DataTrigger>
<DataTrigger
Binding="{Binding Path=EditorType}"
Value="{x:Static view:EditorType.Text}">
<Setter
Property="Control.Template"
Value="{StaticResource textTemplate}" />
</DataTrigger>
<DataTrigger
Binding="{Binding Path=EditorType}"
Value="{x:Static view:EditorType.Integer}">
<Setter
Property="Control.Template"
Value="{StaticResource integerTemplate}" />
</DataTrigger>
...
....
</Style.Triggers>
</Style>
</Control.Style>
</Control>
Run Code Online (Sandbox Code Playgroud)
现在,同样可以利用来实现ContentPresenter,DataTemplate而DataTemplateSelector这样的-
<local:EditorTemplateSelector
BoolEditorTemplate="{StaticResource boolTemplate}"
TextEditorTemplate="{StaticResource textTemplate}"
IntegerEditorTemplate="{StaticResource integerTemplate}"
...
....
x:Key="EditorTemplateSelector">
</local:EditorTemplateSelector>
<ContentPresenter
ContentTemplateSelector="{Binding Source={StaticResource EditorTemplateSelector}}"
Content="{Binding}"
TargetUpdated="OnTargetUpdated">
</ContentPresenter>
// …Run Code Online (Sandbox Code Playgroud) wpf datatrigger datatemplate controltemplate datatemplateselector
我希望能够集中对齐堆栈面板中的按钮.按钮数是动态的,并在加载控件时生成.例如,如果生成1个按钮,则此按钮应放在控件的中心.如果显示5个按钮,那么所有5个按钮应相互水平对齐,但是控件的中心位置.
另一种方法是让控件根据其内容动态调整大小,以便使用更多按钮更宽,然后在页面上水平对齐用户控件,但我不确定如何处理任何一种解决方案?
有人有什么想法吗?
WPF中的ControlTemplates是否需要TargetType?我正在重新设置一些控件,并注意到comboboxitem,listiviewitem和listboxitem都具有相同的模板:
<ControlTemplate x:Key="ListBoxItemCT" TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd"
SnapsToDevicePixels="true"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
CornerRadius="1">
<ContentPresenter x:Name="cpItemContent"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
/>
</Border>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
是否可以删除TargetType并为所有三个模板设置一个模板?我试图这样做,但得到奇怪的错误和问题.我找不到ControlTemplates必须具有类型的任何特定参考.
我正在尝试编写用于排序的通用对象比较器,但我注意到它不处理其中一个值比较的实例为null的实例.当一个对象为null时,我希望它对待它与空字符串相同.我已经尝试将null值设置为String.Empty,但是当我调用CompareTo()时,我得到"Object必须是String类型"的错误.
public int Compare(T x, T y)
{
PropertyInfo propertyInfo = typeof(T).GetProperty(sortExpression);
IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null);
IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null);
if (obj1 == null) obj1 = String.Empty; // This doesn't work!
if (obj2 == null) obj2 = String.Empty; // This doesn't work!
if (SortDirection == SortDirection.Ascending)
return obj1.CompareTo(obj2);
else
return obj2.CompareTo(obj1);
}
Run Code Online (Sandbox Code Playgroud)
我现在非常坚持这个!任何帮助,将不胜感激.
我知道默认的WPF行为是渲染WPF控件然后在顶部呈现WinForms,但有没有办法在其上呈现WPF WindowsFormsHost?
编辑:我也发现了一个临时黑客.当wpf控件重叠时WindowsFormsHost,我改变了它的大小WindowsFormsHost(这只适用于有重叠的矩形对象,不适用于其他形状.)
我最近发现wpf以两种不同的方式处理INotifyPropertyChanged.我只是想知道是什么原因.
让我们采用正常的双向绑定验证为真.
如果你将一个属性从ui设置为viewmodel就像这样.
但如果你在viewmodel中设置了属性,它会像这样
我有一个WPF应用程序(英文),我想让用户选择不同的语言.我已经阅读了一些在运行时应用程序中更改语言的可能性,但我只想在安装时选择一种语言,而不是更改它.
您认为最快最容易的方法是开发不同版本的程序(仅更改文本语言)并让用户在安装过程中选择其中一个版本吗?可能重复代码只更改文本框或标签不是很优雅,但请注意我的应用程序用英语完成,我不需要在运行时更改语言.
wpf ×9
.net ×7
c# ×4
binding ×1
datatemplate ×1
datatrigger ×1
debugging ×1
focus ×1
icomparer ×1
multilingual ×1
silverlight ×1
sorting ×1
targettype ×1
templates ×1
vb.net ×1