我想为库存管理创建一个向导UI.xaml中的相关行是:
<ContentPresenter Content="{Binding Current}" ContentTemplateSelector="{StaticResource inventorySelector}"/>
Run Code Online (Sandbox Code Playgroud)
"当前"是当前活动的视图模型,其中包括AvailableInventoriesViewModel,GroupsViewModel,NewArticlesViewModel,ResultViewModel.我已经定义了DataTemplateSelector:
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using Centron.WPF.WarehousingExtension.InventoryModule.ViewModels.WizardViewModels;
namespace Centron.WPF.WarehousingExtension.InventoryModule.UI.DataTemplateSelectors
{
public class InventoryDatatemplateSelector : DataTemplateSelector
{
public DataTemplate AvailableDatatype { get; set; }
public DataTemplate GroupsDatatype { get; set; }
public DataTemplate NewDatatype { get; set; }
public DataTemplate ResultDatatype { get; set; }
public InventoryDatatemplateSelector()
{
Debug.WriteLine("");
}
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is AvailableInventoriesViewModel)
return AvailableDatatype;
else if (item is GroupsViewModel)
return GroupsDatatype;
else if …Run Code Online (Sandbox Code Playgroud) 可能重复:
事件处理程序执行顺序
C#事件系统对于单线程程序是否具有确定性?这意味着,如果我按此顺序触发事件A,B和C,它们每次都会以相同的顺序处理吗?
我想编写一个严重依赖事件的游戏逻辑,并且事件的处理顺序与调用它们的顺序至关重要.那么我可以使用给定的事件系统,像Reactive Extensions这样的库是否满足这个要求,还是我必须实现自己的观察者系统?
我有以下XAML:
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="227" Width="391">
<Window.Resources>
<ControlTemplate x:Key="PentagonButton" TargetType="{x:Type Button}">
<Grid>
<Path Data="M 0,-1 L -.95,-.3 L -.58,.8 L .58,.8 L .95,-.3 Z" Stroke="Black" Stretch="Uniform" Fill="Red" />
<Viewbox>
<ContentPresenter Margin="20" />
</Viewbox>
</Grid>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button Content="red" Margin="12,19,0,0" Template="{StaticResource PentagonButton}" HorizontalAlignment="Left" Width="166" Height="151" VerticalAlignment="Top" />
<Button Content="blue" Margin="178,19,0,0" Template="{StaticResource PentagonButton}" Height="151" VerticalAlignment="Top" HorizontalAlignment="Left" Width="173" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
由于Fill ="Red",显然所有按钮都有红色填充/背景颜色.我想将这个模板用于几个按钮,但每个按钮都有不同的填充颜色,在设计时已知.设置背景颜色无效,因此我必须更改填充颜色,但我无法在实际按钮定义中再次定义Path属性.如何在XAML中访问和覆盖此属性?
我有以下TextBox:
<TextBox Text="{Binding SearchString,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)
绑定到以下属性:
private string _searchString;
public string SearchString
{
get
{
return _searchString;
}
set
{
value = Regex.Replace(value, "[^0-9]", string.Empty);
_searchString = value;
DoNotifyPropertyChanged("SearchString");
}
}
Run Code Online (Sandbox Code Playgroud)
该类继承自实现的基类 INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void DoNotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
Run Code Online (Sandbox Code Playgroud)
我只想要一个快速而肮脏的方法来禁止非整数文本框的非数字字符(我知道它不完整,只是为了演示).我不想仅仅通知有非法文本或任何内容,我想立即丢弃所有不允许输入的字符.
但是,TextBox表现得很奇怪.我仍然可以输入我想要的任何文字,它将显示为输入,例如"1aaa".即使在此示例中已将属性正确清除为"1",文本框仍显示"1aaa".只有当我输入一个会导致_searchString更改的实际数字时,它才会更新显示的文本,例如当我有"1aaa2"时它会正确地更新为"12".这是怎么回事?
如何使用XSLT将Richtext图像从标准WPF RichTextBox转换为HTML?
根据这个答案,我制作了以下XSLT文件.到目前为止,它转换为粗体,斜体,下划线,字体系列,字体大小和字体颜色.现在我仍然需要它将Richtext中的图像转换为HTML.
不必考虑图像对齐.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl x">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="x:Section[not(parent::x:Section)]">
<div>
<xsl:apply-templates select="node()"/>
</div>
</xsl:template>
<xsl:template match="x:Section">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="x:Paragraph">
<p>
<xsl:apply-templates select="node()"/>
</p>
</xsl:template>
<xsl:template match="x:Run">
<xsl:variable name="style">
<xsl:if test="@FontStyle='Italic'">
<xsl:text>font-style:italic;</xsl:text>
</xsl:if>
<xsl:if test="@FontWeight='Bold'">
<xsl:text>font-weight:bold;</xsl:text>
</xsl:if>
<xsl:if test="contains(@TextDecorations, 'Underline')">
<xsl:text>text-decoration:underline;</xsl:text>
</xsl:if>
<xsl:if test="@FontSize != ''">
<xsl:text>font-size:</xsl:text>
<xsl:value-of select="@FontSize" />
<xsl:text>pt;</xsl:text>
</xsl:if>
<xsl:if test="@FontFamily != ''">
<xsl:text>font-family:</xsl:text>
<xsl:value-of select="@FontFamily" />
<xsl:text>;</xsl:text>
</xsl:if>
<xsl:if test="@Foreground != ''"> …Run Code Online (Sandbox Code Playgroud)